www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ide - Debugger on Codeblocks with DMD and Tango on Linux

reply Timo Gransch <timo.gransch gmx.de> writes:
Hi all,

did anybody manage to make the debugger work with the above environment
(Codeblocks 8.02 or the current 'Nightly Build', current Tango + DMD
package with DMD 1.033, gdb 6.8 from Debian Testing)?

If I set a breakpoint and then start the debugger, I get:

-------------------
Starting debugger: 
done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Debugger name and version: GNU gdb 6.8-debian
Child process PID: 3642
-------------------

This looks OK to me so far, but there is no debugger arrow shown. Obviously
something happens when I press F7 (Next line), because every time I do, I
get messages like

-------------------
In _D6dmain24mainUiPPaZi7runMainMFZv () ()
In _D6dmain24mainUiPPaZi7tryExecMFDFZvZv () ()
In _D6dmain24mainUiPPaZi6runAllMFZv () ()
In _D6dmain24mainUiPPaZi7tryExecMFDFZvZv () ()
-------------------

... and finally ...

-------------------
In main () ()
In __libc_start_main () (/lib/libc.so.6)
Program exited normally.
Debugger finished with status 0
-------------------

... but still no yellow arrow. 

Any ideas on what is wrong?

Best regards and thanks in advance,
Timo
Aug 10 2008
next sibling parent reply "Koroskin Denis" <2korden gmail.com> writes:
On Sun, 10 Aug 2008 11:41:26 +0400, Timo Gransch <timo.gransch gmx.de>  
wrote:

 Hi all,

 did anybody manage to make the debugger work with the above environment
 (Codeblocks 8.02 or the current 'Nightly Build', current Tango + DMD
 package with DMD 1.033, gdb 6.8 from Debian Testing)?

 If I set a breakpoint and then start the debugger, I get:

 -------------------
 Starting debugger:
 done
 Registered new type: wxString
 Registered new type: STL String
 Registered new type: STL Vector
 Setting breakpoints
 Debugger name and version: GNU gdb 6.8-debian
 Child process PID: 3642
 -------------------

 This looks OK to me so far, but there is no debugger arrow shown.  
 Obviously
 something happens when I press F7 (Next line), because every time I do, I
 get messages like

 -------------------
 In _D6dmain24mainUiPPaZi7runMainMFZv () ()
 In _D6dmain24mainUiPPaZi7tryExecMFDFZvZv () ()
 In _D6dmain24mainUiPPaZi6runAllMFZv () ()
 In _D6dmain24mainUiPPaZi7tryExecMFDFZvZv () ()
 -------------------

 ... and finally ...

 -------------------
 In main () ()
 In __libc_start_main () (/lib/libc.so.6)
 Program exited normally.
 Debugger finished with status 0
 -------------------

 ... but still no yellow arrow.

 Any ideas on what is wrong?

 Best regards and thanks in advance,
 Timo

I don't use gdb but I've heard you need to apply some patches for better D support (like variable and function names demangling etc). Take a look here: http://dsource.org/projects/gdb-patches/browser/downloads/gdb6.8 That's all I can help you with.
Aug 11 2008
parent Timo Gransch <timo.gransch gmx.de> writes:
Koroskin Denis wrote:

 I don't use gdb but I've heard you need to apply some patches for better D
 support (like variable and function names demangling etc). Take a look
 here: http://dsource.org/projects/gdb-patches/browser/downloads/gdb6.8

Hi! Thanks a lot, didn't know about this. I patched and compiled gdb 6.8, but the unfortunately the behaviour is still the same. Best regards, Timo
Aug 11 2008
prev sibling parent reply =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= <afb algonet.se> writes:
Timo Gransch wrote:

 did anybody manage to make the debugger work with the above environment
 (Codeblocks 8.02 or the current 'Nightly Build', current Tango + DMD
 package with DMD 1.033, gdb 6.8 from Debian Testing)?

If you don't get the same problems when doing the same build/debug from the commandline, it might be a bug where -g is not properly passed... I believe the logic (inherited from C/C++) might only pass -g when compiling which might not be enough. Or, it could be something else. --anders PS. Testing the same thing with GDC would also help isolate the problem.
Aug 13 2008
parent reply "Denis Koroskin" <2korden gmail.com> writes:
On Wed, 13 Aug 2008 11:19:42 +0400, Anders F Björklund <afb algonet.se>  
wrote:

 Timo Gransch wrote:

 did anybody manage to make the debugger work with the above environment
 (Codeblocks 8.02 or the current 'Nightly Build', current Tango + DMD
 package with DMD 1.033, gdb 6.8 from Debian Testing)?

If you don't get the same problems when doing the same build/debug from the commandline, it might be a bug where -g is not properly passed... I believe the logic (inherited from C/C++) might only pass -g when compiling which might not be enough. Or, it could be something else. --anders PS. Testing the same thing with GDC would also help isolate the problem.

Yeah, make sure compiler and linker get the "-g" flag. 1) Compiler settings -> Compiler flags -> check "add symbolic debug info [-g]" (and, optionally, "compile in debug code [-debug]) 2) Linker settings -> Other linker options - add "-g".
Aug 13 2008
parent Timo Gransch <timo.gransch gmx.de> writes:
Denis Koroskin wrote:

 Yeah, make sure compiler and linker get the "-g" flag.
 
 1) Compiler settings -> Compiler flags -> check "add symbolic debug info
 [-g]" (and, optionally, "compile in debug code [-debug])
 2) Linker settings -> Other linker options - add "-g".

Hi Denis and Anders! I already had -g and -debug checked in the compiler settings. I added -g in the linker options and tried to debug again, but unfortunately it does not make any difference. The funny thing is that the breakpoint I set is nevertheless somehow recognized by gdb. In spite of having no arrow and variable watches, I can obviously step through the lines of the code by pressing F7 and get some output. If I do not set a breakpoint, the debuger rushes through the code and finishes immediately. Thanks for all your help and efforts. Maybe this is rather a topic for the CodeBlocks forum (although there are only very few D programmers there). KR, Timo
Aug 13 2008