問題タブ [address-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.
macos - OS X の Clang Address Sanitizer
Valgrind はこのプラットフォームでのメモリ チェックに問題があるため、OSX Mountain Lion で clang アドレス サニタイザーを使用したいと考えています。しかし-fsanitize=address
、コンパイル時に (このページで見られるように: http://clang.llvm.org/docs/AddressSanitizer.html )、このエラーが発生しました:clang: error: argument unused during compilation: '-fsanitize=address'
それで、私の質問は、OS X で Clang Address Sanitizer を使用する方法ですか? 使用できない場合、どのツールを使用できますか?
Xcodeでclangをダウンロードしましたが、最新です。(おそらく、このバージョンにはサニタイザーのビルドに対応していない可能性があります)
macos - コマンドライン クランを使用、OS X 10.9.1、Xcode 5.0.2
clang の -fsanitize=address 機能を使用したいと思います。
私は〜に乗っています:
コマンド ラインから clang を実行していますが、次のエラーが表示されます。
これはうまくいくと言われていますが、探し回っても道がわかりません。異なるバージョンの clang を導入する必要がありますか?
ありがとう!
c++ - GCC のアドレス サニタイザーの意味のあるスタック トレース
-fsanitize=address
GCCとフラグでコンパイルしてみました。プログラムを実行すると、アドレス サニタイザは欠陥を検出しますが、スタック トレースは役に立ちません。参照する必要があるソース コードの場所を指すように、これをどのように構成できますか?
c - clang の -fsanitize=address を使用してデバッグ出力の行番号を取得するにはどうすればよいですか?
で検出されたメモリ エラーをデバッグしようとしていますが、 では検出さclang
れasan
ませんでしたvalgrind
。しかし、clang
ビルドされたバイナリを取得して、有用なデバッグ情報を得ることができません。短いテスト プログラムでこれを実証できます。
(明らかに、このエラーはによって検出されます。valgrind
純粋に の問題を示すためclang
です。)
次のように Clang 3.4-1ubuntu1 でコンパイルします。
案の定、./test
中止し、いくつかのデバッグ情報が表示されます。
しかし、私が本当に知りたいのは、エラーが発生した行番号と、メモリが割り当てられた場所です。
clang
+からこの情報を取得するにはどうすればよいasan
ですか?
c++ - トランクから clang をコンパイルする際のエラー
clang のコンパイル時にエラーが発生しました。iOS シミュレーター用にコンパイルされたアドレスサニタイザーに問題があるようです。x86_64 の libclang.dylib にリンクする理由がわかりません。誰もそれを見たことがありますか?または、オフにする方法はありますか?
gcc - GCC 4.8.2 の Asan を使用する場合のスタック トレースの未解決のシンボル
このチュートの助けを借りてバグハンティングを試みます: https://fuzzing-project.org/tutorial2.html
アドレス サニタイザーを使用している場合、スタック トレースにシンボル解決がありません。
ここで説明する操作を試みます: GCC のアドレス サニタイザーの意味のあるスタック トレースですが、うまくいきません。私のOSはUbuntu 14.04です
私が取る手順は次のとおりです。
私は古典的なオフバイワンエラーであるCでテストプログラムを使用しています
/li>llvm 3.5をインストールします
apt-get
次の変数をエクスポートします
/li>次のコマンドでgcc 4.8.2でコンパイルします
/li>テスト プログラムを起動すると、バグ レポートに警告が表示されます。AddressSanitizer が llvm-symbolizer-3.5 に接続できないようです
/li>
そして、スタックトレースにシンボルがありません。sudo を実行すると、警告は表示されませんが、シンボルの解決もありません。
p>また、Google ページ プロジェクトで説明されている python スクリプトを試してみましたasan_symbolize.py
が、結果はありませんでした。
c++ - OpenCV でアドレス サニタイザーを使用する
Google のAddress Sanitizerを CUDA プロジェクト、より正確には OpenCV cuda 関数で使用しようとしています。ただし、最初の cuda 呼び出しで「メモリ不足」エラーが発生しました。
で再現できます
でコンパイル
gcc でも同じ結果が得られました。また、結果なしでcuda関数をブラックリストに登録しようとしました。
opencvなしでcudaを使用するようになりました:
サニタイザーはメモリ リークで停止します。
私の質問は、アドレスサニタイザーを使用して、これにこだわらずにソフトウェアをサニタイズするにはどうすればよいですか? 少なくともcuda関連のすべての呼び出しを適切にブラックリストに登録するにはどうすればよいですか?
有名な Web 検索エンジンで関連するものは見つかりませんでした。人々が cuda や asan、あるいはその両方を使用していないようです。cuda を完全に無効にしたビルドを持っているだけですか?
asan は cuda メモリ管理に苦労していると思いますが、少なくともコードベースの残りの部分でこのツールを使用する方法を探しています。