[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