<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.10.3">
</HEAD>
<BODY>
Tim,<BR>
<BR>
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?<BR>
<BR>
A bit brute force, but bound to work.<BR>
<BR>
regards,<BR>
Ben<BR>
<BR>
On Thu, 2006-08-10 at 10:14 -0700, Martin, Tim wrote:
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#0000ff">This may be more of a question for GDB folks...but I'll post it here because it relates to embedded systems as well.</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#0000ff">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).</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#0000ff">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:</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#000000">break log_stuff</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000">commands</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000"> silent</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000"> if (variable_logging_enabled)</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000"> append value outputfile.bin stuff1_variable</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#000000"> append value outputfile.bin stuff2_variable</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000"> end</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000"> cont</FONT></FONT><BR>
<FONT SIZE="2"><FONT COLOR="#000000">end</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#0000ff">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?</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#0000ff">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.</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT SIZE="2"><FONT COLOR="#0000ff">Tim</FONT></FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000"> </FONT>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<PRE>
<FONT COLOR="#000000">_______________________________________________</FONT>
<FONT COLOR="#000000">Linuxppc-embedded mailing list</FONT>
<FONT COLOR="#000000"><A HREF="mailto:Linuxppc-embedded@ozlabs.org">Linuxppc-embedded@ozlabs.org</A></FONT>
<FONT COLOR="#000000"><A HREF="https://ozlabs.org/mailman/listinfo/linuxppc-embedded">https://ozlabs.org/mailman/listinfo/linuxppc-embedded</A></FONT>
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>