ltrace
は、-z now
オプションにリンクされたバイナリでは機能しません—チェック this 質問—これは私のUbuntu19.10システムのデフォルトです。 -z lazy
にリンクされたバイナリでのみ機能します。
同じ仕事をするが、遅延リンクバイナリでも機能するltrace
の代替手段はありますか?
この質問に答えました ここ 。まとめを投稿します。
ftraceユーティリティ は、-z now
にリンクされたバイナリで機能するltraceの有効な代替手段です。以下はデモンストレーションです。
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Hello world!\n");
return 0;
}
上記のhelloworldプログラムをデモンストレーションの目的で使用します。
sumit@HAL9000:~$ gcc hello.c -o hello -Wl,-z,now
sumit@HAL9000:~$ ltrace ./hello
Hello world!
+++ exited (status 0) +++
sumit@HAL9000:~$ uftrace --force -a ./hello
Hello world!
# DURATION TID FUNCTION
187.291 us [ 40352] | puts("Hello world!") = 13;
上記のように、ltrace
は-z now
でコンパイルされたときにプログラムで機能しませんでしたが、uftrace
は機能しました。