特定のプログラムをデバッグするたびに追加したいブレークポイントのリストがあります。ブレークポイントを含むファイルを作成し、gdb -x "file" コマンドを使用しましたが、将来の共有ライブラリのロードで保留中のすべてのブレークポイントが追加されませんでした。この問題を解決する方法はありますか?
質問する
2289 次
1 に答える
4
スクリプトで共有ライブラリのブレークポイントを保留中として設定し、共有ライブラリがロードされると、ブレークポイントが正しく設定されます。
(gdb) help set breakpoint pending
Set debugger's behavior regarding pending breakpoints.
If on, an unrecognized breakpoint location will cause gdb to create a
pending breakpoint. If off, an unrecognized breakpoint location results in
an error. If auto, an unrecognized breakpoint location results in a
user-query to see if a pending breakpoint should be created.
これはスクリプトの例です (print_in_lib
でロードされる共有ライブラリにあるとしますdlopen
):
file main
set breakpoint pending on
b print_in_lib
r
そして、これはその出力です:
host: srv2-x64rh5-01, OS: Linux 2.6.18-238.el5>gdb -q
Function "print_in_lib" not defined.
Breakpoint 1 (print_in_lib) pending.
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000
thousands: 1
print_debug: 0
Breakpoint 1, print_in_lib (print_debug=0) at my_lib.cpp:7
7 if (print_debug) {
(gdb) bt
#0 print_in_lib (print_debug=0) at my_lib.cpp:7
#1 0x00000000004008ab in main (argc=<value optimized out>, argv=<value optimized out>) at main.cpp:37
(gdb)
于 2012-06-30T11:26:47.273 に答える