如何使用命令标志在将来的共享库上设置断点
我正在尝试使用--command
标志自动化gdb会话。 我试图设置一个共享库中的函数的断点(一个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. 许可证GPLv3 +:GNU GPL版本3或更高版本 这是免费软件:您可以自由更改和重新分配它。 没有担保,在法律允许的范围内。 键入“显示复制” 和“显示保修”的细节。 这个GDB被configuration为“i586-mandriva-linux-gnu”... (没有finddebugging符号) 未定义函数“IA__FcFontMatch”。 在将来的共享库加载时使断点处于等待状态? (y或[n])[回答N; 不是从terminalinput]
所以它毕竟不设置断点。 我怎样才能让它默认回答“y”设置断点未来的共享库负载?
我记得我能做些事情,但不记得是什么。
回复自己,我想给出IRC上有人给我的答案:
(gdb)apropos等待 操作 - 指定要在跟踪点执行的操作 设置断点 - 断点特定设置 设置断点挂起 - 设置debugging器关于挂起断点的行为 显示断点 - 断点特定的设置 显示未决断点 - 显示有关未决断点的debugging器行为
所以设置断点等待伎俩; 它用于像例如cmds.gdb
set breakpoint pending on break <source file name>:<line number>
OT:在terminal,它看起来像这样debuggingCaja在一行:
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
例如,你需要打破主要,并运行到rest。 所以共享库将被加载。
解释为阿帕奇