Как установить контрольные точки в будущих общих библиотеках с помощью командного флага - PullRequest
88 голосов
/ 19 сентября 2008

Я пытаюсь автоматизировать сеанс 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 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», чтобы установить точки останова в ожидании будущей загрузки общей библиотеки?

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

Ответы [ 3 ]

139 голосов
/ 19 сентября 2008

Отвечая себе, я хотел бы дать ответ, который кто-то дал мне в 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>
9 голосов
/ 20 июля 2012

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

gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync
5 голосов
/ 14 июля 2009

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...