it-swarm.com.ru

Как установить точки останова в будущих общих библиотеках с помощью командного флага

Я пытаюсь автоматизировать сеанс GDB, используя флаг --command. Я пытаюсь установить точку останова для функции в общей библиотеке (Unix-эквивалент DLL). Мой 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 выпуск 2009.0) 
 Copyright (C) 2008 Free Software Foundation, Inc. 
 Лицензия GPLv3 +: GNU GPL версия 3 или более поздняя 
 Это бесплатное программное обеспечение: вы можете свободно изменить и перераспределить его. 
 ГАРАНТИЯ НЕ ПРЕДОСТАВЛЯЕТСЯ, если это разрешено законом. Для получения подробной информации введите "show copying" 
 И "показать гарантию". 
 Этот GDB был настроен как "i586-mandriva-linux-gnu" ... 
 (Символы отладки не найдены ) 
 Функция "IA__FcFontMatch" не определена. 
 Сделать точку останова ожидающей при будущей загрузке общей библиотеки? (y или [n]) [ответил N; ввод не с терминала] 
 

Так что это не устанавливает точку останова в конце концов. Как можно по умолчанию ответить "y", чтобы установить точки останова в ожидании будущей загрузки общей библиотеки?

Я помню, что я мог что-то сделать, но не могу вспомнить, что.

88
Shlomi Fish

Отвечая себе, я хотел бы дать ответ, который кто-то дал мне в IRC:

 (gdb) по поводу ожидающих 
 действий - укажите действия, которые необходимо выполнить с точкой трассировки 
 установить точку останова - специальные настройки точки останова 
 установить ожидание точки останова - установить поведение отладчика в отношении ожидающих точек останова 
 show breakpoint - специальные настройки точки останова 
 show breakpoint pending - показать поведение отладчика в отношении ожидающих точек останова 

И так установите точку останова в ожидании делает свое дело; он используется в cmds.gdb как, например,.

set breakpoint pending on
break <source file name>:<line number>
139
Shlomi Fish

OT: В терминале это будет выглядеть для отладки Caja в одной строке:

gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync
9
äxl

Без символов.

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
5
RandomNickName42