2014-01-13 53 views
2

我是ltrace的新手。如何使用带通配符的ltrace

例如,这个工程:

ltrace -c -e "XDrawLine" -p 10876 ^C 
% time  seconds usecs/call  calls  function 
------ ----------- ----------- --------- -------------------- 
100.00 4.925592   501  9829 XDrawLine 
------ ----------- ----------- --------- -------------------- 
100.00 4.925592     9829 total 

但是,这没有什么一致:

trace -c -e "XDrawLin*" -p 10876 
^C 
% time  seconds usecs/call  calls  function 
------ ----------- ----------- --------- -------------------- 
------ ----------- ----------- --------- -------------------- 
100.00 0.000000      0 total 

而且,与-e "/XDrawLin.*/"-e "XDrawLin.*"没有运气无论是。 任何工作示例表示赞赏。

  • 如果这是整理出来,我想继续跟踪如何跟踪C++ lib符号,我应该使用mangled或demangled格式吗?
+0

你可以管它变成一个grep的下载和使用通配符.. – WeaselFox

+0

的grep平是没有选择,因为我想跟踪的电话密度。 (如果我运行它没有过滤器,它会崩溃的过程:() – tzp

回答

2

-e交换机的功能发展了ltrace版本。即使是最新的Linux发行版本也经常发布一个较老的ltrace,而这很可能是您的问题。 (例如,如果我没有记错,RHEL6版本为0.5。)运行ltrace --v并确保您的版本为0.7及以上。

 
* Version 0.7.0 [2012-11-09 Fri] 

** Tracing 
... 

*** Limited support for tracing returns from tail call functions 

*** -e, -x and -l selectors now allow using globs and regular expressions 

http://anonscm.debian.org/gitweb/?p=collab-maint/ltrace.git;a=blob_plain;f=NEWS;hb=0.7.3

如果你有一个旧ltrace - 与你的包管理器更新或http://freecode.com/projects/ltrace

+0

事实上,我从0.5.3升级到0.7.3和瞧,我上面提到的通配符现在工作!谢谢。 – tzp