これは、FUSE ファイル システムを開発する人々にとって永遠の問題です。このリンクが役立つ場合があります(1つの回答にまとめるのは文字通り多すぎます)。この回避策には、fusermount のジャスト イン タイムの交換と、(場合によっては) valgrind へのいくつかの追加オプションが含まれ、子がトレースされないようにします。
実際、私の FS を valgrind で実行すると、次の出力が得られます (そうです、多くの人がこの問題を抱えていたため、起動時に valgrind を実際に検出してリンクを表示しました)。
root@tower:~ # valgrind xsfs /xs
==9479== Memcheck, a memory error detector.
==9479== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==9479== Using LibVEX rev 1884, a library for dynamic binary translation.
==9479== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==9479== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==9479== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==9479== For more details, rerun with: -v
==9479==
******** Valgrind has been detected by xsfs
******** If you have difficulties getting xsfs to work under Valgrind,
******** see the following thread:
******** http://www.nabble.com/valgrind-and-fuse-file-systems-td13112112.html
******** Sleeping for 5 seconds so this doesn't fly by ....
最も簡単な方法は、root として実行されている使い捨ての VM ですべてのデバッグを行うことです。ここでは、setuid ビットを削除するだけで完了できます。コードをテストして、リークや違反がないことを確認してください。ヒューズを使用していないリンクされたライブラリ コードをテストするのは簡単です。ビルドを「valgrind-clean」に手渡し、ドキュメンテーションでそうしたことに注意してください。
次に、それを検出するためにいくつかのビットを取得し、valgrind/valgrind.h
先に進んで実行する人のために短いメッセージを表示します。これを回避するためのハッキングにはルートの協力が必要であり、率直に言って、サンドボックスでも同様にはるかに簡単に実行できます。
また、setuid ビットをオンにして valgrind の下で実行することを拒否するのも簡単です。本当に実行したい場合はオフにするように人々に役立つメッセージを表示します。