0

Makefile が valgrind で実行されているかどうかを検出する必要があります (間接的に、valgrind --trace-children=yes を使用)。C から実行する方法は知っていますが、スクリプトから実行する方法が見つかりません。

以前の回答は Linux でのみ機能します。Mac OS XI の場合、誰かがより良いアイデアを持っていない限り、環境で VALGRIND_STARTUP_PWD を grep するつもりです。

4

1 に答える 1

3

シェルから:

grep -q '/valgrind' /proc/$$/maps && echo "valgrindage"

これにより、valgrind プリロード ライブラリがプロセスのアドレス マップに存在するかどうかが決まります。これはかなり効果的ですが、'/valgrind' モニカを共有する非 valgrind 関連のライブラリがある場合、誤検知が発生します (可能性は低いです)。

[grep パターンを vg_preload から /valgrind に変更しました。これは、Debian/Ubuntu でのテストでライブラリ名が異なることが明らかになりましたが、valgrind のディレクトリ マッチが成功する可能性が最も高いためです。]

于 2008-12-11T21:31:04.933 に答える