我想看看何时以及传递给它的参数.
监视“X”的库由另一个动态库“Y”调用.
‘X和’Y’都出现在可执行文件’A’的/ proc / pID / maps中.
使用ltrace,在可执行文件上没有显示lib X或Y.
可执行文件使用多个线程.
此外,在exec上使用ldd命令时,它没有提及有关libs X或Y的任何内容.
ldd Y,表明Y需要X.
在所有lib上使用ldd,项目中的高管没有提到任何需要Y的人.
然而,Y似乎被加载到执行官的/ proc / pID / maps中.
我不确定我可以采取哪些步骤来调试X lib,任何建议都表示赞赏.
解决方法 如果user756235可以在gdb下运行它,那么这是一种使用 this和 this的方法.唯一的问题是在共享库中创建一个完整的函数列表X:nm ./libX.so | grep“T”然后创建.gdbinit(在我的例子中,我控制print_in_lib的args):
host: srv2-x64rh5-01,OS: linux 2.6.18-238.el5>more .gdbinitfile mainset pagination offset logging file gdb.txtset breakpoint pending onset logging onb print_in_libcommandsinfo argscontinueendrset logging offquit
当我运行gdb时:
总结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: 0Breakpoint 1,print_in_lib (print_deBUG=0,index=0) at my_lib.cpp:7 7
if (print_deBUG) { print_deBUG = 0 index = 0Breakpoint 1,index=1) at my_lib.cpp:7 7
if (print_deBUG) { print_deBUG = 0 index = 1Breakpoint 1,index=2) at my_lib.cpp:7 7
if (print_deBUG) { print_deBUG = 0 index = 2Breakpoint 1,index=3) at my_lib.cpp:7 7 if (print_deBUG) { print_deBUG = 0 index = 3
以上是内存溢出为你收集整理的gdb – 监控linux动态库全部内容,希望文章能够帮你解决gdb – 监控linux动态库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)