gdb – 监控linux动态库

gdb – 监控linux动态库,第1张

概述我想监视(调试)用C编写的 linux动态库. 我想看看何时以及传递给它的参数. 监视“X”的库由另一个动态库“Y”调用. ‘X和’Y’都出现在可执行文件’A’的/ proc / pid / maps中. 使用ltrace,在可执行文件上没有显示lib X或Y. 可执行文件使用多个线程. 此外,在exec上使用ldd命令时,它没有提及有关libs X或Y的任何内容. ldd Y,表明Y需要X. 在 我想监视(调试)用C编写的 linux动态库.
我想看看何时以及传递给它的参数.

监视“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: 0

Breakpoint 1,print_in_lib (print_deBUG=0,index=0) at my_lib.cpp:7 7
if (print_deBUG) { print_deBUG = 0 index = 0

Breakpoint 1,index=1) at my_lib.cpp:7 7
if (print_deBUG) { print_deBUG = 0 index = 1

Breakpoint 1,index=2) at my_lib.cpp:7 7
if (print_deBUG) { print_deBUG = 0 index = 2

Breakpoint 1,index=3) at my_lib.cpp:7 7 if (print_deBUG) { print_deBUG = 0 index = 3

总结

以上是内存溢出为你收集整理的gdb – 监控linux动态库全部内容,希望文章能够帮你解决gdb – 监控linux动态库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存