Has anyone found a graphical debugger for Linux that'll display D source
code?
I've found a few gdb front-ends, but I haven't been able to get a lot of
them to display D source files, and other misc. problems.
Thanks
John

Has anyone found a graphical debugger for Linux that'll display D source
code?
I've found a few gdb front-ends, but I haven't been able to get a lot of
them to display D source files, and other misc. problems.
Thanks
John

it's not the front-end.
it's not gdb.
There is no sufficente information on the code to do that.
That was one of mine MIID.
gdb can give you the stack trace and
step by machine code instructons.
which front-ends did you find?
(I have been using DDD)
Ant

Has anyone found a graphical debugger for Linux that'll display D source
code?
I've found a few gdb front-ends, but I haven't been able to get a lot of
them to display D source files, and other misc. problems.
Thanks
John

it's not the front-end.
it's not gdb.
There is no sufficente information on the code to do that.
That was one of mine MIID.
gdb can give you the stack trace and
step by machine code instructons.
which front-ends did you find?
(I have been using DDD)
Ant

I've tried DDD, insight, and kgdb... gdb kinda works... does the debug
executable not include code line numbers, and file names or something?
Does GDC do it correctly?

Has anyone found a graphical debugger for Linux that'll display D source
code?

I've tried DDD, insight, and kgdb... gdb kinda works... does the debug
executable not include code line numbers, and file names or something?
Does GDC do it correctly?

no, from http://www.digitalmars.com/d/dcompiler.html
"
Linux Bugs
* -g is not implemented, because I haven't figured out how to do it
yet. gdb still works, though, at the global symbol level.
"
and "global symbol level" to me are class methods.
I don't know what you can see with non OO code.
here is what I have:
Breakpoint 1, 0x407aa9e6 in printf () from /lib/libc.so.6
(gdb) bt
#0 0x407aa9e6 in printf () from /lib/libc.so.6
#1 0x08195e11 in _D4dool6String6String7printlnFAaZv ()
#2 0x0816cb0b in _D4leds4Leds4Leds4initFAAaZv ()
#3 0x0816c9c3 in _D4leds4Leds4Leds4ledsFAAaZC4leds4Leds4Leds ()
#4 0x0816f5ba in _Dmain ()
#5 0x081b573c in main ()
as you see I put a breakpoint on printf. Why? because first I have to
find out what is the name of my method!
however it's very usefull on a segfault as you can see the stack trace.
you can also disassemble and see what functions are called.
again you'll have to decode the names.
for instance from the backtrace we can see the leds.init method is at
0x0816cb0b - lets disassemble it:
(gdb) disas 0x0816cb0b
Dump of assembler code for function _D4leds4Leds4Leds4initFAAaZv:
0x0816ca68 <+0>: push %ebp
0x0816ca69 <+1>: mov %esp,%ebp
0x0816ca6b <+3>: sub $0x18,%esp
0x0816ca6e <+6>: push %ebx
0x0816ca6f <+7>: push %esi
0x0816ca70 <+8>: push %edi
0x0816ca71 <+9>: mov %eax,0xffffffe8(%ebp)
0x0816ca74 <+12>: call 0x81b56b0 <_D9invariant12_d_invariantFC6ObjectZv>
0x0816ca79 <+17>: mov 0xffffffe8(%ebp),%eax
0x0816ca7c <+20>: mov (%eax),%ecx
0x0816ca7e <+22>: call *0x3c(%ecx)
0x0816ca81 <+25>: push %eax
0x0816ca82 <+26>: pushl 0x81c8d28
0x0816ca88 <+32>: pushl 0x81c8d24
0x0816ca8e <+38>: call 0x819861c
<_D4dool2io4Path4Path4joinFC4dool6String6StringAaZC4dool6String6String>
0x0816ca93 <+43>: mov 0xffffffe8(%ebp),%edx
0x0816ca96 <+46>: mov %eax,0x1c(%edx)
0x0816ca99 <+49>: mov %edx,%eax
0x0816ca9b <+51>: mov (%eax),%ebx
0x0816ca9d <+53>: call *0x3c(%ebx)
(I changed the output a bit)
you can see that the invariante for the object is called
and that the 'join' method on the 'Path' class from 'dool'
that method returns an instance of String (dool.String.String)
and receives a String and a char[].
that seems to correspond to the begining of the actual source code:
private: void init(char[][]args)
{
debug(debugStartup) printf("Leds.init 1\n");
ledsHome = Path.join(getUserHome(),".leds");
the call at address +22 is probably the 'getuserHome()'.
now you can do stepi or nexti or until x<address>
with stepi you will eventualy get into the method getUserHome
that's all I know about gdb and D code
Anybody knows more?
Ant

Has anyone found a graphical debugger for Linux that'll display D source
code?
I've found a few gdb front-ends, but I haven't been able to get a lot of
them to display D source files, and other misc. problems.
Thanks
John

Valgrind seems to be slightly useful for working with D programs. I've
played with it a bit and, along with gdb, could be a useful debugging
tool for d.