コードの近くでアサーションにヒットしている実行可能ファイル(他の誰かによってコンパイルされたもの)があります。Visual C ++ 2003でコードを処理していますが、この特定の実行可能ファイルのプロジェクトファイルがありません(コードはさまざまなツールのビルドに使用されます)。Visual C ++のデバッガーでバイナリを起動し、ソースがどこにあるかを伝えることは可能ですか?私は以前にGDBでこれを行ったことがあるので、それが可能であるはずだと知っています。
3 に答える
そのアプリケーションの PDB シンボルがなければ、何がどこで起こっているのかを理解するのに苦労するでしょう。ソース コード情報は、そのアプリケーションを作成したときに作成された PDB ファイルにのみ含まれると思います。
これは、PDB ファイルがこのアプリケーション用に作成されたことがあることを前提としています。これは、リリース モードの VC++ プロジェクトのデフォルト構成ではないと思います。あなたが主張しているので、これはデバッグ構成だと思いますか?
他の答えがなければ、コードにブレークポイントを設定して、Visual Studio の実行可能プロセスにアタッチしてみます。ソースがないプロセスにステップインすると、ソース ファイルを要求する必要があります。
はい、可能です。空のプロジェクトをセットアップし、目的の.exe
ファイルをデバッグ ターゲットとして指定するだけです。winamp.exe
正確な方法は覚えていませんが、Winamp のプラグインを開発するときにデバッグ ターゲットとして設定していたので、実行可能であることはわかっています。
ソース ファイルがないため、アセンブリ コードのみが表示されますが、メモリやレジスタなども検査できるため、それでも役立つ場合があります。
アップデート
独自のプログラムでアサーションをデバッグしている場合、デバッグ情報を使用してコンパイルすると、ソース ファイルへのパスが実行可能ファイルに格納されるため、ソースを問題なく表示できるはずです。