[vox-tech] advanced gdb question

Charles Polisher vox-tech@lists.lugod.org
Fri, 14 Jun 2002 20:46:44 -0700


On Fri, Jun 14, 2002 at 06:58:38PM -0700, Micah Cowan wrote:
> Peter Jay Salzman writes:
>  > hey there,
>  > 
>  > every tutorial on gdb says "compile with -g" within the first few lines.
>  > but what if you don't?  or rather, what if you can't compile with -g?
>  > 
>  > but how do you inspect arguments, local variables, etc. in a given frame
>  > if you don't know the address of these variables because the symbol
>  > table is unavailable?
> 
> Well, without compiling with -g, you obviously don't have the
> convenience of debugging symbols and whatnot - but you should still be
> able to examine the program as raw assembly (hey, it's better than raw
> machine code).
> 
> I just tried it on /bin/echo (stripped).
> 
> You can set the initial breakpoint with: b main
> 
> after beginning the run, you'll be in main, and you can use: disas
> to disassemble the current function. You'll get the whole
> function. You can set breakpoints at specific addresses, and move on
> that way.
> 
> It's a mess, but it's something.
> 
> I'm no gdb expert, so I'm sure someone can offer better advice than
> this...?
> 
> Micah

What you're looking for is a decompiler, such as the
one described in Cifuentes, but they're scarce as
hen's teeth:

http://www.sable.mcgill.ca/publications/papers/2002-2/sable-paper-2002-2.ps.gz

Your next option is studying up on your CPU's
instruction set and application binary interface
(ABI) specification, and reading the code.  If you've
got a typical Elf object file, the binary exposes
some symbols to the linker (man objdump -- and it has
a built-in disassembler). At least you'll have the
entry point (as Micah pointed out), the exit call,
and anyplace a library function is called. 

You've got to be seriously motivated to go this
route: I've had decades of practice yet it remains a
major undertaking to debug without a symbol table. 

> what if you can't compile with -g?

Can you explain why not (or is that hypothetical) ?
Maybe you can generate a map file and use that
for your landmarks.

Is hyperthetical the opposite of hypothetical, and
does it have anything to do with coffee?


-- 
The US Constitution isn't perfect. But it's better than what we have now.