Opened 14 years ago
Closed 10 years ago
#26450 closed defect (fixed)
gdb does not work for debugging gcc45 C++ programs
Reported by: | bumens@… | Owned by: | stuartwesterman (Stuart Westerman) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.9.1 |
Keywords: | Cc: | tvb377@…, michaelld (Michael Dickens), manphiz@…, macports@…, geekosaur, ClintO (Clint O), alexeiz@…, cooljeanius (Eric Gallager) | |
Port: | gdb |
Description
Neither fsf-gdb nor fsf-gdbtui work for debugging C++ programs. They're finding errors where no errors are, it's even not possible to try out because it's not possible to debug until the main() entry (with gdb command "start").
In contrast, MacPorts' cgdb works, as well as Apple's gdb (both don't work very well because of the too old release of GNU's gdb they're made of).
Attachments (1)
Change History (21)
comment:1 Changed 14 years ago by mf2k (Frank Schima)
Owner: | changed from macports-tickets@… to dweber@… |
---|
comment:2 Changed 14 years ago by tvb377@…
Cc: | tvb377@… added |
---|
comment:3 Changed 14 years ago by tvb377@…
Some tests with gcc45+gdb72: With a helloworld-like test
#include <iostream> #include <string> int main(int argc, char ** argv) { std::cout << "Wie gehts denn so?" << std::endl; std::string bla = "Ganz gut!"; std::cout << bla << std::endl; return 0; }
I notice:
b main r -->Program received signal SIGSEGV, Segmentation fault. 0x0000000100045d73 in std::basic_ostream<char, std::char_traits<char> >::sentry::sentry(std::basic_ostream<char, std::char_traits<char> >&) () from /opt/local/lib/gcc45/libstdc++.6.dylib
There can be more failures produced like
b 7 r Breakpoint 1, main (argc=1, argv=0x1000002d8) at tst.cpp:7 7 std::string bla = "Ganz gut!"; (gdb) n 0x00007fff5fc0d500 in ?? () (gdb) n Cannot find bounds of current function
or with a different program I also get
Breakpoint 3, main (argc=Could not find the frame base for "main(int, char**)".
Changed 14 years ago by tvb377@…
Attachment: | Portfile-gdb.diff added |
---|
patch to get gdb to 7.2, but does not help for this problem.
comment:8 Changed 13 years ago by tvb377@…
I think that this ticket really describes 2 things.
First is that you cannot really use mp-g++-4.5. See http://lists.macosforge.org/pipermail/macports-dev/2011-June/014877.html
That accounts at least for one of the errors I experienced during my first tests.
Second is that mainline GNU gdb apparently does not work for OSX as a target.
Using gdb 7.3 to trace through a hello world in C++ gives for me:
(gdb) b main
Breakpoint 1 at 0x1000009c9: file ostringstream.cpp, line 6.
(gdb) r
Starting program: a.out
BFD: unable to read unknown load command 0x24
BFD: unable to read unknown load command 0x26
Error in re-setting breakpoint 1: Cannot access memory at address 0x1000009bd
I get similar results when trying a C program, also of "hello world" complexity.
As far as I can see gdb is dead for OSX as a target. Since lldb works quite well for OSX targets that's not too bad.
Maybe the port should be marked as "broken".
comment:9 Changed 13 years ago by manphiz@…
Replying to jmr@…:
Any improvement with 7.3?
Following instruction on http://sourceware.org/gdb/wiki/BuildingOnDarwin I am able to debug program built using a hand built gcc 4.6 and trunk (4.7), even though there are lots of warning about missing debugging symbol. Not sure about gcc 4.5 from macports.
comment:12 Changed 13 years ago by nkatzakis@…
macports gdb 7.3 does not work for debugging macports gcc-mp-4.6.2 programs either.
comment:17 Changed 10 years ago by mf2k (Frank Schima)
Owner: | changed from dweber@… to macports-tickets@… |
---|
dweber has retired. See #43834.
comment:18 Changed 10 years ago by mf2k (Frank Schima)
Owner: | changed from macports-tickets@… to stuartwesterman@… |
---|
comment:19 Changed 10 years ago by stuartwesterman (Stuart Westerman)
This problem is overcome by new gdb (7.7.1). Please close this ticket.
comment:20 Changed 10 years ago by larryv (Lawrence Velázquez)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Cc Me!