2017-12-08 12 views
3

Linux/gcc/clangから来るWindows/Visual Studioではますます多くの作業をしています。MSVCのようなサニタイザのような機能に対処する

私が本当に不足しているのは、アドレスサニタイザー(境界チェック、リーク、フリー後の使用...)です。私はいくつかの研究を行い、いくつかのことを試してみましたが、完全な(機能的な)代替品と信頼性の高い代替品は見つかりませんでした。私はDr.Memoryを試しましたが、Qtベースのプログラム(少なくともWindows 10ではない)では動作しないことを学びました。

Windows/MSVCではどのようにアドレスサニタイズ機能を使用できますか?

+0

msvcが厳しい要件でない場合は、Linuxを開発してチェックし、gccやMXE/mingwなどとクロスコンパイルしてください。もしmsvcでコンパイルされたクローズドソースライブラリを手に入れていれば、valgrindはまだLinux +ワインで動作します。 – Velkan

+0

ご回答いただきありがとうございますが、私はmsvsに関する質問に概要が記載されていることに特に関心があります。 –

答えて

2

少なくともclanのASanとUbsanはWindowsで動作するはずですが、いくつかの制限があります。これらはmsvcツールチェーンでclang-clをcl.exeの置き換えとして使用することができます - googleはworking on this、mozilla tooと思われます。

  • コンパイラ-RT静的CRTへのリンク(/ MD(ASANが含まれて打ち鳴らすのパッケージ):私は(そしてそれは、今まで自分自身をそれを使用してから私をkeeped)を認識してい

    問題)llvm/clang prebuiltパッケージでは、QtがAFAIKを実行するような動的CRT(/ MT)が必要な場合は、/ MTと何らかの形でコンパイラを構築する必要があります(このhereに関する別の質問を作成しました)。構築しますがWindows

  • にWindows上での例外のためのサポートはサポートされていません

  • のみリリース(this問題を参照)

  • Windowsのポート上の多くの更なる作業、wikiがあるようには思えません例えばひどく時代遅れです(2015年の最後の変更)ので、多くの人がこれを生産的に使用しているのではないでしょうか。

    • Appverifierは、(WindowsのSDKに来て)、現在(
    • Dr Memoryを:だから、そこにあるが、非常に難しいかもしれない...

    は、Windows上の他の選択肢について話すオンライン他のユーザーからの助けを得ますQtとSSE 4.2の命令を使用するすべての人にとっては完全に使用できないことを意味します。herehereを参照してください)

  • Intel Inspector(市販)。

Linux上のサニタイザとValgrindは、これらのツールよりもはるかに高度であり、パフォーマンスがはるかに優れているため、少なくともクロスプラットフォームのツールキットQt(あなたが言及しているように)。

+0

この回答に良いものがあります。また、MSVCのランタイムライブラリに組み込まれたかなり良いヒープメモリトラッキング機能があることに注意してください。しかし、それらを有効にする必要があります。 https://docs.microsoft.com/en-us/visualstudio/debugger/crt-debug-heap-details –

関連する問題