問題タブ [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.

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

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 とは別に有効にできることに注意してください。

0 投票する
0 に答える
79 参照

c++ - Clang fsan がスタック トレースに行番号を表示しない

Clang++ のリーク サニタイザーは、単体テストの 1 つでメモリ リークがあると主張しています。私はそれを信じたいと思っていますが、調べても見つかりません。

次のオプションでコンパイルしています。

次のような出力が得られます

(重要でない情報は削除されています)。

上記の出力の問題は、何がリークされているかを把握できるように、ファイル番号と行番号ではなくメモリ アドレスを取得することです。

Google で有名な Clang の Chandler Carruth によると、デバッグ出力 ('-g') を有効にすると、スタック トレースのメモリ アドレスがファイル番号と行番号に置き換えられるはずです。(具体的には、彼がそれを適用しているのをここで見ることができます。) コンパイル フラグからわかるように、デバッグ情報を出力しています。

私が何を無視している可能性がありますか?

0 投票する
2 に答える
8810 参照

memory-leaks - 直接リークと間接リークの違いは何ですか?

LeakSanitizer ツールから次の出力を得ました。ツールが理解する直接リークと間接リークの違いは何ですか?

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

c++ - -fsanitize=address で実行しているときに LeakSanitizer レポートを抑制するにはどうすればよいですか?

C++ コードを でコンパイルすると-fsanitize=address、ソフトウェアは終了時にリークのリストを出力します。リーク レポートを回避する方法はありますか (リークではなく、メモリの破損にのみ関心があります)。ASAN flags pageのページに移動しましたが、これらのフラグのいずれも一致していないようです。