加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

gdb – 监控linux动态库

发布时间:2020-12-13 23:03:14 所属栏目:Linux 来源:网络整理
导读:我想监视(调试)用C编写的 linux动态库. 我想看看何时以及传递给它的参数. 监视“X”的库由另一个动态库“Y”调用. ‘X和’Y’都出现在可执行文件’A’的/ proc / pid / maps中. 使用ltrace,在可执行文件上没有显示lib X或Y. 可执行文件使用多个线程. 此外,在
我想监视(调试)用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 .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时:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读