如果 user756235 可以在 gdb 下运行它,那么这是一种使用this和this的方法。唯一的问题是在共享库 X 中列出完整的函数列表:nm ./libX.so | grep "T "
然后创建 .gdbinit (在我的情况下,我控制 args 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,操作系统: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