From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp105.biz.mail.re2.yahoo.com (smtp105.biz.mail.re2.yahoo.com [206.190.52.174]) by ozlabs.org (Postfix) with SMTP id DC37A67B7E for ; Fri, 11 Aug 2006 05:28:02 +1000 (EST) Subject: Re: Debugging with no serial port From: Ben Warren To: "Martin, Tim" In-Reply-To: <821B2170E9E7F04FA38DF7EC21DE487105FD10D3@VCAEXCH01.hq.corp.viasat.com> References: <821B2170E9E7F04FA38DF7EC21DE487105FD10D3@VCAEXCH01.hq.corp.viasat.com> Content-Type: multipart/alternative; boundary="=-jsspxpk94SfiVzi8Gk5s" Date: Thu, 10 Aug 2006 15:27:58 -0400 Message-Id: <1155238078.920.15.camel@saruman.qstreams.net> Mime-Version: 1.0 Cc: linuxppc-embedded@ozlabs.org Reply-To: bwarren@qstreams.com List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --=-jsspxpk94SfiVzi8Gk5s Content-Type: text/plain Content-Transfer-Encoding: 7bit Tim, How about something a bit simpler like running gdb within a 'script' context, which will log your session to a file. Get gdb to print the variables to the screen (using 'print' or whatever), wrap your data with easily searchable characters (eg. ***data1 data2 data3***), then filter your data from the script file with sed/awk or perl scripts? A bit brute force, but bound to work. regards, Ben On Thu, 2006-08-10 at 10:14 -0700, Martin, Tim wrote: > This may be more of a question for GDB folks...but I'll post it here > because it relates to embedded systems as well. > > I'm trying to validate some signal processing software on an embedded > Virtex4 PowerPC 405. Basically, the validation consists of calling > functions and looking at their outputs. Over time, there are several > thousand numbers to look at, so manually looking at each number at a > break point would be very time consuming (to put it mildly). > > The normal way I would go about doing this is to print out the data > (e.g. to a serial port) and post-process the data somewhere else. But > on this particular target, I don't have a serial port. So I thought > about using GDB's breakpoint command list feature. When the software > has data it wants to print out, it calls a function "log_stuff". I > then set a breakpoint and command list in the "log_stuff" function, > which writes out the variables I'm interested in checking out to a > file named outputfile.bin. E.g. the following command file does this: > > break log_stuff > commands > silent > if (variable_logging_enabled) > append value outputfile.bin stuff1_variable > append value outputfile.bin stuff2_variable > end > cont > end > > The problem I have with this approach is that GDB doesn't finish > writing out everything before it continues executing the program, so a > backlog develops. So my first question would be, is there some GDB > "flush" like command I could run before the cont statement? > > Second question would be - is there an easier way to accomplish what > I'm trying to do, which is basically emulate a serial port with GDB. > > Tim > > > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded --=-jsspxpk94SfiVzi8Gk5s Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit Tim,

How about something a bit simpler like running gdb within a 'script' context, which will log your session to a file.  Get gdb to print the variables to the screen (using 'print' or whatever), wrap your data with easily searchable characters (eg. ***data1 data2 data3***), then filter your data from the script file with sed/awk or perl scripts?

A bit brute force, but bound to work.

regards,
Ben

On Thu, 2006-08-10 at 10:14 -0700, Martin, Tim wrote:
This may be more of a question for GDB folks...but I'll post it here because it relates to embedded systems as well.
 
I'm trying to validate some signal processing software on an embedded Virtex4 PowerPC 405.  Basically, the validation consists of calling functions and looking at their outputs.  Over time, there are several thousand numbers to look at, so manually looking at each number at a break point would be very time consuming (to put it mildly).
 
The normal way I would go about doing this is to print out the data (e.g. to a serial port) and post-process the data somewhere else.  But on this particular target, I don't have a serial port.  So I thought about using GDB's breakpoint command list feature.  When the software has data it wants to print out, it calls a function "log_stuff".  I then set a breakpoint and command list in the "log_stuff" function, which writes out the variables I'm interested in checking out to a file named outputfile.bin.  E.g. the following command file does this:
 
break log_stuff
commands
   silent
   if (variable_logging_enabled)
      append value outputfile.bin stuff1_variable
      append value outputfile.bin stuff2_variable
   end
   cont
end
 
The problem I have with this approach is that GDB doesn't finish writing out everything before it continues executing the program, so a backlog develops.  So my first question would be, is there some GDB "flush" like command I could run before the cont statement?
 
Second question would be - is there an easier way to accomplish what I'm trying to do, which is basically emulate a serial port with GDB.
 
Tim
 
_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
--=-jsspxpk94SfiVzi8Gk5s--