Как установить точки останова в будущих общих библиотеках с помощью командного флага
Вопрос
Я пытаюсь автоматизировать сеанс GDB, используя --command
флаг.Я пытаюсь установить точку останова для функции в общей библиотеке (эквивалент DLL в Unix).Мой cmds.gdb выглядит так:
set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r
Однако я получаю следующее:
shlomi:~/progs/bugs-external/kde/font-breaking$ gdb --command=cmds.gdb... GNU gdb 6.8-2mdv2009.0 (Mandriva Linux release 2009.0) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i586-mandriva-linux-gnu"... (no debugging symbols found) Function "IA__FcFontMatch" not defined. Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal]
Так что в конце концов он не устанавливает точку останова.Как я могу сделать так, чтобы по умолчанию использовался ответ «y», чтобы установить точки останова при ожидании будущей загрузки общей библиотеки?
Помню, что я мог что-то сделать, но не могу вспомнить, что.
Решение
Отвечая самому себе, я хотел бы дать ответ, который мне кто-то дал в IRC:
(gdb) apropos pending actions -- Specify the actions to be taken at a tracepoint set breakpoint -- Breakpoint specific settings set breakpoint pending -- Set debugger's behavior regarding pending breakpoints show breakpoint -- Breakpoint specific settings show breakpoint pending -- Show debugger's behavior regarding pending breakpoints
И так установить отложенную точку останова делает свое дело;он используется в cmds.gdb
как например
set breakpoint pending on
break <source file name>:<line number>
Другие советы
ОТ:В терминале отладка Caja в одну строку будет выглядеть так:
gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync
Без каких-либо символов.
objdump -t /lib/libacl.so
SYMBOL TABLE:
no symbols
objdump -T /lib/libacl.so
...
00002bd0 g DF .text 000000d0 ACL_1.0 acl_delete_entry
...
(gdb) break 0x0002bd0
(gdb) x/20i acl_delete_entry
0x2bd0 <acl_delete_entry>: stwu r1,-32(r1)
0x2bd4 <acl_delete_entry+4>: mflr r0
0x2bd8 <acl_delete_entry+8>: stw r29,20(r1)
0x2bdc <acl_delete_entry+12>: stw r30,24(r1)
0x2be0 <acl_delete_entry+16>: mr r29,r4
0x2be4 <acl_delete_entry+20>: li r4,28972