1

Purify 6 を使用して、VC++ 2003 (7.1) でビルドされた実行可能ファイルのメモリ破損を分析しようとしています。

次のコマンドでバイナリをインストルメント化すると、次のようになります。

purify /Replace=yes /Run=no myprog.exe

インストルメンテーションが中止され、実行可能ファイルがインクリメンタルにリンクされたことが通知されます。困惑して、ビルドオプションを確認しました/INCREMENTAL:NOが、そこにありました。確かに、私はそれを再構築し、オプションはリンク時に正しく渡されました。

実行可能ファイルがインクリメンタルにリンクされているかどうかを知る方法はありますか?

私は何をdumpbin /HEADERS言っているのかを見ましたが、関連するものは何も見ませんでした。

ありがとう。

4

1 に答える 1

3

オプション1:

c:...>dumpbin/summarywhatever.exe

「.textbss」セクションを探します。

これが 100% 信頼できるかどうかはわかりませんが、私の経験では、リンカーはインクリメンタル リンクを行うときに常にこのセクションを追加します。

オプション 2:

実行可能ファイルの横にある「.ilk」ファイルを探します。Visual Studio は、使用されていないときにこれらをクリーンアップするのに適しているように思われるため、インクリメンタル リンクとビルド (「再ビルド」でさえも) を無効にすると削除されます。

オプション 3:

ビルド ログ ([ツール]、[オプション]、[プロジェクト]) を有効にし、生成される buildlog.html ファイルで "/INCREMENTAL" または "/INCREMENTAL:NO" を探します。

オプション 4:

.vcproj ファイルを解析します。(いや!)

于 2009-07-13T18:18:55.080 に答える