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

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

谢谢指教!

作者: sbyond   发布时间: 2007-07-04



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

谢谢指教!


为嘛不用 ldd?

作者: MMMIX   发布时间: 2007-07-04



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

strace your_command

作者: maluyao   发布时间: 2007-07-04



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

调用共享库有两种方法,一种显式调用(dlopen),一种是隐式调用(由ld.so在程式开始运行时加载),
除了楼上的方法外,还可以通过/proc里面的相关文件获得

作者: MingLin1231   发布时间: 2007-07-04



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


有时侯由于共享库的问题程序根本启动不起来;或者执行很快,一下就结束了,根本来不及看。其实 strace 还是最好的方案。

作者: MMMIX   发布时间: 2007-07-04



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




谢谢斑竹:)!

作者: sbyond   发布时间: 2007-07-04

Thanks a lot..

作者: 程序匠人   发布时间: 2011-01-20