問題タブ [sanitizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
359 参照

gdb - GDB では、Clang と MemorySanitizer を使用して、エラーをトリガーするアドレスを取得するにはどうすればよいですか?

Clang と MemorySanitizer を使用していますが、インライン アセンブリが原因で誤検知が発生しました。インライン アセンブリ コードは後で使用される一部のメモリを初期化しますが、MemorySanitizer はこれを初期化されていない値の使用と見なします。

誤検知をフィルタリングする小さな GDB スクリプトを作成しようとしています。__msan_warning_noreturn にブレークポイントを設定しました。これは、MemorySanitizer にエラーを出力して保釈する関数です。ただし、エラーを引き起こすアドレスを取得する簡単な方法が見つかりませんでした。

エラーを引き起こすアドレスを見つけるにはどうすればよいですか?

私はX64アーキテクチャ、Linux、clang-3.8に取り組んでいます

ありがとうございました。

0 投票する
1 に答える
1824 参照

gcc - gcc でデフォルトで AddressSanitizer を有効にする

Linux ディストリビューション全体をデバッグおよびファジングできるようにするには、ASAN (AddressSanitizer、https://en.wikipedia.org/wiki/AddressSanitizer ) を gcc のデフォルト オプションとして設定します。したがって、通常、私が望むものを達成するために、通常、Linux パッケージをコンパイルする前に次の変数を設定します。

私のコードをコンパイルして実行してみてください。デフォルトをgccにしたいと思います。

それを行う 1 つのオプションは、スペック ファイルを使用することです: https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html。しかし、AddressSanitizer を使用してすべての C/C++ コードをコンパイルおよびリンクするための「すべてのルールをキャッチ」を設定する方法が見つかりませんでした。

私の質問は次のとおりです。

  • スペックファイルを使用してそれを行う方法の例はありますか?
  • それはそれを行うための最良のアプローチですか?
  • 他の代替アプローチはありますか?