コマンド フラグを使用して将来の共有ライブラリにブレークポイントを設定する方法
質問
を使用して 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」と答えるようにするにはどうすればよいですか?
何かができたことは覚えていますが、何をしたか思い出せません。
解決
私自身への返信として、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>
他のヒント
OT:ターミナルでは、Caja を 1 行でデバッグするには次のようになります。
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
所属していません StackOverflow