web-dev-qa-db-ja.com

同じ仕事をするltraceに代わるものはありますか?

ltraceは、-z nowオプションにリンクされたバイナリでは機能しません—チェック this 質問—これは私のUbuntu19.10システムのデフォルトです。 -z lazyにリンクされたバイナリでのみ機能します。

同じ仕事をするが、遅延リンクバイナリでも機能するltraceの代替手段はありますか?

1
SkullTech

この質問に答えました ここ 。まとめを投稿します。

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は機能しました。

1
SkullTech