user756235がgdbで実行できる場合、これはthisとthisを使用するアプローチです。唯一の質問は、共有ライブラリXの関数の完全なリストを作成することです。nm ./libX.so | grep "T "
次に、.gdbinitを作成します(私の場合、の引数を制御しますprint_in_lib
):
host: srv2-x64rh5-01, OS: Linux 2.6.18-238.el5>more .gdbinit
file main
set pagination off
set logging file gdb.txt
set breakpoint pending on
set logging on
b print_in_lib
commands
info args
continue
end
r
set logging off
quit
そして私が走るときgdb
:
ホスト:srv2-x64rh5-01、OS:Linux 2.6.18-238.el5>gdb-q関数"print_in_lib"が定義されていません。ブレークポイント1(print_in_lib)は保留中です。警告:0x2aaaaaaab000千の追加されたシンボルファイルシステム提供のDSOにロード可能なセクションが見つかりません:1 print_debug:0
ブレークポイント1、print_in_lib(print_debug = 0、index = 0)at my_lib.cpp:7 7 if(print_debug){print_debug = 0 index = 0
ブレークポイント1、print_in_lib(print_debug = 0、index = 1)at my_lib.cpp:7 7 if(print_debug){print_debug = 0 index = 1
ブレークポイント1、print_in_lib(print_debug = 0、index = 2)at my_lib.cpp:7 7 if(print_debug){print_debug = 0 index = 2
ブレークポイント1、print_in_lib(print_debug = 0、index = 3)at my_lib.cpp:7 7 if(print_debug){print_debug = 0 index = 3