首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监控linux动态库

监控linux动态库
EN

Stack Overflow用户
提问于 2012-07-02 16:36:20
回答 1查看 503关注 0票数 4

我想监控(调试)一个用C写的linux动态库。

我想看看什么时候和什么参数被传递给它。

要监视“X”的库由另一个动态库“Y”调用。

'X‘和'Y’都出现在可执行文件'A‘的/proc/pid/map中。

使用ltrace,在可执行文件上没有显示lib X或Y。

可执行文件正在使用多个线程。

此外,当在exec上使用ldd命令时,它没有提到任何关于库X或Y的内容。

ldd Y,表明Y需要X。

在所有的库上使用ldd,项目中的执行人员没有提到任何需要Y的人。

但是,Y似乎已加载到exec的/proc/pid/映射中。

我不确定我可以采取什么步骤来调试X,任何建议都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-02 18:33:24

如果user756235可以在gdb下运行它,那么这是一种使用thisthis的方法。唯一的问题是在一个共享库中创建一个完整的函数列表X:nm ./libX.so | grep "T "

然后创建.gdbinit (在我的例子中,我控制print_in_lib的args ):

代码语言:javascript
复制
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千:1 print_debug: 0位置添加的符号文件系统提供的DSO中找不到可加载的节

断点1,索引7处的索引( print_in_lib (print_debug=0,index=0) ) if ( print_debug ) {print_debug=0 print_in_lib=0

断点1,索引7处的索引( print_in_lib (print_debug=0,index=1) ) if ( print_debug ) {print_debug=0 print_in_lib=1

断点1,索引7处的索引( print_in_lib (print_debug=0,index=2) ) if ( print_debug ) {print_debug=0 print_in_lib=2

断点1,索引7处的索引( print_in_lib (print_debug=0,index=3) ) if ( print_debug ) {print_debug=0 print_in_lib= 3

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11290267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档