Использование GDB с внешними библиотеками - PullRequest
1 голос
/ 24 февраля 2010

В настоящее время я отлаживаю проект, который использует внешнюю библиотеку ( LibFirm ). Когда я вызываю библиотечные функции, я не могу реально увидеть, что там происходит с GDB (то есть я не могу проверять локальные переменные и тому подобное).

Библиотека с открытым исходным кодом, и я сам скомпилировал ее, так что я думаю, что у gdb должна быть возможность посмотреть и на нее. Как?

То, что я сейчас вижу, это

(gdb) bt
#0  0x00994422 in __kernel_vsyscall ()
#1  0x002704d1 in *__GI_raise (sig=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0x00273932 in *__GI_abort () at abort.c:92
#3  0x00269648 in *__GI___assert_fail (
    assertion=0xd238f4 "_get_type_state(ctx.frame_tp) == layout_fixed", 
    file=0xd23458 "be/beabi.c", line=1879, function=0xd23d0d "modify_irg")
    at assert.c:81
#4  0x00b219e3 in ?? () from /usr/local/lib/libfirm.so.0
#5  0x00b21df0 in be_abi_introduce () from /usr/local/lib/libfirm.so.0
#6  0x00b59b77 in ?? () from /usr/local/lib/libfirm.so.0
#7  0x00b5b4a5 in be_main () from /usr/local/lib/libfirm.so.0
#8  0x0807daa0 in main (argc=3, argv=0xbffff914) at main.cc:243
(gdb) frame 8
#8  0x0807daa0 in main (argc=3, argv=0xbffff914) at main.cc:243
243                 be_main(output, "a.s");
(gdb) frame 4
#4  0x00b219e3 in ?? () from /usr/local/lib/libfirm.so.

кадр 8 выглядит хорошо, а кадр 4 ничего мне не говорит. Я добавил

dir /usr/local/include/libfirm
dir /home/thomas/Dev/foreign/libfirm

в мой .gdbinit, поэтому gdb должен найти заголовочные и исходные файлы библиотеки.

1 Ответ

0 голосов
/ 27 февраля 2010

Мне пришлось использовать ./configure --enable-debug (CFLAGS="-g" был включен по умолчанию, но может не быть в других проектах, поэтому напомните этот). Кроме того, вы можете использовать CFLAGS="-g -O0" (вместо -g), чтобы код читался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...