2017-08-25 2 views
0

私は、libc呼び出しを含め、クラッシュする前にアプリからの呼び出しを記録しようとしています。 gccで-finstrument-functionsのサポートを自分のライブラリに使用しましたが、この計測器でglibcを構築することはできません。-finstrument-functionsでglibcをビルドする

libc/configureの-finstrument-functionslibc_extra_cflagsを追加しましたが、ld.soをリンクするときにビルドが "__libc_multiple_libcs​​への未定義の参照"で失敗します。 __cyg_profile_func_enter/_exitが定義されていないため、構成テストが失敗するため、CFLAGS=-finstrument-functions ./configureを実行するだけで動作しません。

私は現在、モジュール(stdlib、io、stringなど)ごとにインストルメンテーションを追加し、libc/foo/Makefileを調べる方法を理解しようとしています。 CFLAGS_stdlib = -finstrument-functionsしかし、フラグはgccコマンドには表示されません。

モジュールごとのフラグをglibcビルドに追加する方法はありますか、またはglibcは-finstrument-functionsで動作しないことが分かっていますか?

答えて

1

私は、libc呼び出しを含め、クラッシュする前にアプリによって行われた呼び出しを記録しようとしています。

を使用すると、GLIBCを含む任意の共有ライブラリに対するアプリケーションの呼び出しをトレースできます。

は-finstrument-機能

ほとんどで動作しないことが知らglibcのです。

あなたがそれについて考えるなら、あなたの__cyg_profile_func_enterは何をする予定ですか? libcを呼び出すことはできません。そうしないと、無限再帰で終わります。直接システムコールを使用することは可能ですが、それは自明ではありません。

関連する問題