101

--commandフラグを使用して gdb セッションを自動化しようとしています。共有ライブラリ (DLL に相当する Unix) の関数にブレークポイントを設定しようとしています。私の cmds.gdb は次のようになります。

set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r

ただし、次の結果が得られます。

シュロミ:~/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 以降
これはフリー ソフトウェアです。自由に変更して再配布してください。
法律で許可されている範囲で、保証はありません。「コピーを表示」と入力します
詳細については、「保証を表示する」を参照してください。
この GDB は「i586-mandriva-linux-gnu」として構成されていました...
(デバッグ シンボルが見つかりません)
関数「IA__FcFontMatch」が定義されていません。
今後の共有ライブラリのロード時にブレークポイントを保留にしますか? (y または [n]) [N と答えた; 端末からではない入力]

したがって、結局ブレークポイントは設定されません。保留中の将来の共有ライブラリのロードにブレークポイントを設定するために、デフォルトで「y」に応答するようにするにはどうすればよいですか?

何かできたことは覚えているが、何ができたか思い出せない。

4

3 に答える 3

166

自分自身に返信して、誰かがIRCで私にくれた答えを伝えたいと思います。

(gdb)適切な保留中
アクション-トレースポイントで実行するアクションを指定します
ブレークポイントの設定-ブレークポイント固有の設定
ブレークポイントを保留に設定-保留中のブレークポイントに関するデバッガーの動作を設定します
showbreakpoint-ブレークポイント固有の設定
保留中のブレークポイントを表示-保留中のブレークポイントに関するデバッガーの動作を表示します

したがって、ブレークポイントを保留に設定すると、トリックが実行されます。それはcmds.gdb例えばのように使用されます

set breakpoint pending on
break <source file name>:<line number>
于 2008-09-19T08:32:20.933 に答える
13

OT: ターミナルで Caja を 1 行でデバッグすると、次のようになります。

gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync
于 2012-07-19T20:41:09.263 に答える
5

シンボルなし。

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
于 2009-07-14T02:57:10.383 に答える