用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

linux下如何时时跟踪程序看她调用了哪些lib库,不是指ldd!

linux下如何时时跟踪程序看她调用了哪些lib库,不是指ldd!

谢谢指教!
昵称: sbyond  时间: 2007-07-04 17:20:00


QUOTE:
原帖由 sbyond 于 2007-7-4 17:20 发表于 1楼  
linux下如何时时跟踪程序看她调用了哪些lib库,不是指ldd!

谢谢指教!


为嘛不用 ldd?
昵称: MMMIX  时间: 2007-07-04 17:46:00


QUOTE:
原帖由 MMMIX 于 2007-7-4 17:46 发表于 2楼  

为嘛不用 ldd?


以passwd和adduser为例 如果系统缺少 libnss_files-2.5.so 库则
运行 passwd root 程序提示 没有 root这个用户
说明passwd用到了,至少是间接用到了 libnss_files-2.5.so
但是ldd passwd并没有显示passwd用到  libnss_files-2.5.so
所以希望不是使用ldd这种模拟运行的方式察看程序了哪些lib库而是希望能有一个跟踪程序察看程序直接包括间接调用的所有lib库
这一点是ldd无法做到的!
昵称: sbyond  时间: 2007-07-04 18:02:00
strace your_command
昵称: maluyao  时间: 2007-07-04 18:19:00


QUOTE:
原帖由 sbyond 于 2007-7-4 18:02 发表于 3楼  

以passwd和adduser为例 如果系统缺少 libnss_files-2.5.so 库则
运行 passwd root 程序提示 没有 root这个用户
说明passwd用到了,至少是间接用到了 libnss_files-2.5.so
但是ldd passwd并没有显示passwd用 ...


如果是这样的话就只能跟踪代码的执行了,看看其到底打开了哪些库文件。
昵称: MMMIX  时间: 2007-07-04 19:49:00
调用共享库有两种方法,一种显式调用(dlopen),一种是隐式调用(由ld.so在程式开始运行时加载),
除了楼上的方法外,还可以通过/proc里面的相关文件获得
昵称: MingLin1231  时间: 2007-07-04 19:50:00


QUOTE:
原帖由 MingLin1231 于 2007-7-4 19:50 发表于 6楼  
调用共享库有两种方法,一种显式调用(dlopen),一种是隐式调用(由ld.so在程式开始运行时加载),
除了楼上的方法外,还可以通过/proc里面的相关文件获得


有时侯由于共享库的问题程序根本启动不起来;或者执行很快,一下就结束了,根本来不及看。其实 strace 还是最好的方案。
昵称: MMMIX  时间: 2007-07-04 20:03:00


QUOTE:
原帖由 maluyao 于 2007-7-4 18:19 发表于 4楼  
strace your_command




谢谢斑竹:)!
昵称: sbyond  时间: 2007-07-04 23:28:00
Thanks a lot..
昵称: 程序匠人  时间: 2011-01-20 12:26:00
发表评论
昵称:
内容:
验证: