[th] debuginfo + .gnu_debuglink
Paweł Sikora
pluto w agmk.net
Pią, 1 Wrz 2006, 16:11:49 CEST
rereqmqm,
od pewnego czasu w Th funkcjonuje pewne wspomaganie w postaci
pakietów *-debuginfo. wszystko ładnie, ale przy szukaniu błędu
w aplikacji złożonej z wielu komponentów trzeba się trochę
napstrykać {add-}symbol-file przy każdym odpaleniu, po poprawkach,
rekompilacji, itp. myślę, że kosztem kilkunastu bajtów per binarka
możemy sobie ułatwić życie i oszczędzić cenny czas. żeby nie było
tak na sucho, to krótkie demo:
$ g++ dupa.cpp -o dupa -ggdb -O2
$ objcopy --only-keep-debug dupa dupa.debuginfo
$ strip --strip-all dupa
$ objcopy --add-gnu-debuglink=dupa.debuginfo dupa
$ ls -l
5240 2006-09-01 15:52 dupa
346 2006-09-01 13:37 dupa.cpp
32214 2006-09-01 15:51 dupa.debuginfo
$ objdump -s dupa
(...)
Contents of section .gnu_debuglink:
0000 64757061 2e646562 7567696e 666f0000 dupa.debuginfo..
0010 a74f47d4 .OG.
$ gdb ./dupa
(gdb) break dupa.cpp:28
Breakpoint 1 at 0x4005bf: file dupa.cpp, line 28.
(gdb) r
Breakpoint 1, main () at dupa.cpp:28
28 boost::bind( &iface::f, boost::ref( if_ ), boost::bind( bar, x_ ) )();
i to tyle, ładowanie symboli działa z automatu, ale żeby nie było zbyt
pięknie, to opcja obcjopy:--add-gnu-debuglink wybiera z podanej ścieżki
samą nazwę pliku, więc tak z palca nie możemy zakodować ścieżek do
/usr/lib/debug/bleble. trzeba poprawić nieco kodu w w binutils-ach/gdb
(bfd/opncls.c), który obrabia te ścieżki.
pytanie więc, czy chcemy doklejać sekcje .gnu_debuglink w Th?
Więcej informacji o liście dyskusyjnej pld-devel-pl