カーネルを変更できない場合は、アプリケーションを変更する必要があります。ブレークポイントを設定するか(Linuxのアプリケーション内で処理できる場合、WindowsではSEH / VEHを使用して処理できます)、またはより煩わしい方法で命令をフックすることにより、//命令をint何らかの方法でインターセプトする必要があります(システムコール番号とパラメータを保存するコードに変更し、元の//を実行します)。syscallsysenterjmpintsyscallsysenterjmp
編集:ああ、私はそれらの指示を見つけることが挑戦になる可能性があることを追加するのを忘れました。コンパイルされたバイナリでそれらを正しく識別できない場合があります。一部(特に実行時に作成されたもの)を見逃す可能性があり、//(コード分析が完全でない場合)について他のいくつかの指示を行うことがintできますsyscall。sysenterOTOH、実行時に(実行/エミュレートする前に個々の命令(またはそれらのブロック)を分析することによって)それらを見つけると、パフォーマンスが低下します。
いずれにせよ、パフォーマンスの問題は、行われるシステムコールの数と、ログに記録される/トレースされる情報の量に直接関係している可能性があります。それを削減する(つまり、興味深いシステムコールとパラメータのみを選択する)か、たとえば最後の10000システムコールに関する情報のみを収集し、データをメモリに保持して、ファイルに1回だけ(最後に)保存する場合アプリの)、はるかに優れたパフォーマンスが得られます。