2014-01-13 4 views
2

Я новичок в ltrace.Как использовать ltrace с подстановочными знаками

  • Я хотел бы использовать подстановочные знаки (шаблоны) для отслеживания вызовов функций, но они, похоже, не работают так, как должны, на основе веб-страниц, которые я вижу, например. http://man7.org/linux/man-pages/man1/ltrace.1.html

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, следует ли использовать испорченный или 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