1. ホーム
  2. c++

[解決済み] コマンドフラグを使用して将来の共有ライブラリにブレークポイントを設定する方法

2022-12-30 21:21:54

質問

を使ってgdbセッションを自動化しようとしています。 --command フラグを使用して gdb セッションを自動化しようとしています。共有ライブラリ (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)
著作権 (C) 2008 フリーソフトウェアファウンデーション, Inc.
ライセンス GPLv3+: GNU GPL version 3 またはそれ以降 
本ソフトウェアはフリーソフトウェアであり、改変や再配布は自由です。
法律で認められている範囲内で、無保証です。 と入力し、"show copying"
と入力し、"show warranty"で詳細を確認してください。
このGDBは "i586-mandriva-linux-gnu" として設定されました....
(デバッグシンボルは見つかりませんでした)
関数 "IA__FcFontMatch"が定義されていません。
将来の共有ライブラリのロード時にブレークポイントを保留にしますか?(y or [n]) [回答:N; 端末からの入力ではありません]。


結局ブレークポイントを設定しないんですね。どうすれば、保留中の将来の共有ライブラリのロードにブレークポイントを設定するために "y" と答えることをデフォルトにすることができるでしょうか。

私は何かをすることができたと記憶していますが、何をすることができたか思い出せません。

どのように解決したのですか?

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

(gdb) apropos pending
actions -- トレースポイントで実行されるアクションを指定する
set breakpoint -- ブレークポイントに応じた設定
set breakpoint pending -- 保留中のブレークポイントに関するデバッガの挙動を設定する
show breakpoint -- ブレークポイントに関する設定
show breakpoint pending -- 保留中のブレークポイントに関するデバッガの動作を表示する。

そして に保留中のブレークポイントを設定します。 はトリックを行います; これは cmds.gdb のように

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