Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: "John Zoidberg" <the.real.doctor.zoidberg@gmail.com>
To: gdb@sourceware.org
Subject: Log every call and exit in embedded system
Date: Sat, 24 Mar 2007 20:05:00 -0000	[thread overview]
Message-ID: <adbca6b50703241305v7ed29ad6k98ebd64c369271d8@mail.gmail.com> (raw)

Hi,

I am studying a FOSS embedded OS and would like to understand its
callgraph (especially assembly calls during OS initialization).
Since this is an embedded OS it means I have no access to profiling or
coverage features from GCC.
I've also looked into GDB manual for tracing and logging, but didn't
found anything that can solve my problem in a direct way. I tried
backtrace but couldn't get any usefull information.
The idea is to understand its callgraph, so it's a one time operation.
I'm not looking for profiling or statistics (of course that being able
to do this would be great).

ATM, my idea is to create a script that:
(1) parses objdump output to get symbols and
(2) create a GDB command file that sets a breakpoint in every symbol.
I'll then read the commands file, run the target and manually take
note of the function name and source code filename (because there are
symbol name collisions) everytime a breakpoint occurs.

Problems with this approach:
(1) unable to tell when a function returns, so it's impossible to tell
what is the level at which functions are being called. This is
especially true in assembly files (i.e., was it a JMP or was it a
RET?)
(2) unable to track macros and inline code :(
(3) can GBD handle thousands of breakpoints?
(4) it's a slow manual process because when a breakpoint fires I'll
have to take note of the symbol:filename and issue a continue



Is this the only way? Can anyone give me any suggestions or hints?




OFFTOPIC: how can I define string variables for GDB command files? I
tried "set" but it doesn't accept strings. What I would like to do is
this:
export SOURCE_ROOT=/path/to/source/code/with/lots/of/dirs/
dir $SOURCE_ROOT
dir $SOURCE_ROOT/core
dir $SOURCE_ROOT/util
dir $SOURCE_ROOT/drivers
dir $SOURCE_ROOT/drivers/ethernet


Thanks in advance!


             reply	other threads:[~2007-03-24 20:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-24 20:05 John Zoidberg [this message]
2007-03-24 22:20 ` Daniel Jacobowitz
2007-03-26 10:04 ` Andrew STUBBS
2007-03-26 10:23   ` mathieu lacage
2007-03-27 11:07     ` John Zoidberg
2007-03-27 11:56       ` Mathieu Lacage
2007-03-26 21:33 ` Michael Snyder
2007-03-27  9:56   ` John Zoidberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=adbca6b50703241305v7ed29ad6k98ebd64c369271d8@mail.gmail.com \
    --to=the.real.doctor.zoidberg@gmail.com \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox