問題タブ [leak-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.
c - コンパイル時に Leak Sanitizer が有効になっているかどうかを知るにはどうすればよいですか?
GCC コンパイラと Clang コンパイラはどちらも、C プログラムのメモリ リークを検出するのに役立つLeakSanitizerをサポートしています。メモリ リークが避けられない場合があります (たとえば、テスト スイートでテストされているため)。
このようなメモリには、Leak Sanitizer インターフェイスを使用して注釈を付けることができます。
ただし、これは LSan をサポートしないコンパイラでは機能しません。Address Sanitizer では、この構成を使用して ASAN の可用性を検出できます。
__has_feature(leak_sanitizer)
Clang の LSan の存在だけを検出することはできず、GCC にも存在しません__SANITIZE_LEAKS__
。とにかく、ASAN の可用性を検出するにはどうすればよいですか? LSan は、AddressSanitizer および ThreadSanitizer とは別に有効にできることに注意してください。
c++ - Clang fsan がスタック トレースに行番号を表示しない
Clang++ のリーク サニタイザーは、単体テストの 1 つでメモリ リークがあると主張しています。私はそれを信じたいと思っていますが、調べても見つかりません。
次のオプションでコンパイルしています。
次のような出力が得られます
(重要でない情報は削除されています)。
上記の出力の問題は、何がリークされているかを把握できるように、ファイル番号と行番号ではなくメモリ アドレスを取得することです。
Google で有名な Clang の Chandler Carruth によると、デバッグ出力 ('-g') を有効にすると、スタック トレースのメモリ アドレスがファイル番号と行番号に置き換えられるはずです。(具体的には、彼がそれを適用しているのをここで見ることができます。) コンパイル フラグからわかるように、デバッグ情報を出力しています。
私が何を無視している可能性がありますか?
memory-leaks - 直接リークと間接リークの違いは何ですか?
LeakSanitizer ツールから次の出力を得ました。ツールが理解する直接リークと間接リークの違いは何ですか?
c++ - -fsanitize=address で実行しているときに LeakSanitizer レポートを抑制するにはどうすればよいですか?
C++ コードを でコンパイルすると-fsanitize=address
、ソフトウェアは終了時にリークのリストを出力します。リーク レポートを回避する方法はありますか (リークではなく、メモリの破損にのみ関心があります)。ASAN flags pageのページに移動しましたが、これらのフラグのいずれも一致していないようです。