如何使用带有通配符的ltrace

时间:2014-01-13 10:07:33

标签: c++ c linux ltrace re-engineering

我是 ltrace 的新手。

E.g。这有效:

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符号,我应该使用错误格式还是解码格式?

1 个答案:

答案 0 :(得分: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下载