システム全体のライブラリ呼び出しを監視しようとしています。私はライブラリ呼び出しを追跡するために次のスクリプトを書きましたlibguestfs
。
probe begin {
printf("ok\n")
}
probe process("/usr/lib64/libguestfs.so.0.471.0").function("*") {
print_usyms(ubacktrace())
}
その後、test.stpとして保存し、「sudo stap test.stp」を実行しました。これらの関数呼び出しを傍受するために使用するプロセスが必要です。だから私は次の簡単なプログラムを使用しました。libguestfsテストツールこれはlibguestfsパッケージの一部です。セグフォルトです! stapを実行しないと、セグフォルトは発生しません。
基本的に2つの質問があります。
1-なぜこれが起こるのですか?私は何が間違っていましたか?
2- ltrace機能を使用する必要がありますが、システム全体で使用する必要があります。各ライブラリ呼び出しに対して呼び出された最上位APIと、関数を呼び出すプロセスのpidを取得する必要があります。 stapを使ってみましたが、不安定な問題があるようです。代替案はありますか?
PS:私はカーネル3.12.2.3でCentOS 7を使います。