- ベストアンサー
VC++6の「プロセスへアタッチ」について
VC++6(MFC無し)で作成したEXEを「プロセスへアタッチ」でデバッグをしたいのですが、通常のデバッグ実行時と同じようにソースを参照しながらのデバッグはできないのでしょうか? 現在、プロセスへアタッチを行うと新たにワークスペースは作成され、ソースがない状態でデバッグ中となってしまいます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ソースレベルのデバッグも可能です 何か特定のアクションを起こした際に実行されるコードに # たとえば WndProcのWM_LBUTTONDOWNなど _asm{ int 3 } を埋め込んでみましょう ここへ到達した際に VC6のIDEがソースを表示してくれると思います ただし、ソースを手直しして再コンパイル&実行はこの手法では無理だと思います 再コンパイルが必要ならばワークスペース(DSW)から起動した方がいいでしょう EXEファイルには プロジェクト設定までは盛り込まれていないので
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
EXEにはプロジェクト関連のデータは埋め込まれないのでしょうがないと思いますよ
お礼
了解です。ありがとうございました。 <m(__)m>
- chie65536
- ベストアンサー率41% (2512/6032)
ソースデバッグが出来るのは、あくまでも「現在、開かれているプロジェクト内のプロセスのみ」です。 「現在、開かれているプロジェクト内に無いプロセス」にアタッチすると、CPUコードデバッグしか出来ません。 Boland C++5などでは「プロジェクトグループ」と言うのがあり、1つのプロジェクトグループ内で、複数のプロセスを作成出来ます。 このプロジェクトグループを開くと、複数のプロセスのソースコードが同時に開かれ「プロセスにアタッチ」でデバッグ対象プロセスを切り替えると、自動的に対象となるソースコードも切り替わります。 VC++6で、もし、Boland C++5と同様の「プロジェクトグループ」がサポートされているなら、同じように「同一プロジェクトグループ内に限り」ソースレベルデバッグが可能だと思われます。 しかし、もし、Boland C++5と同様の「プロジェクトグループ」がサポートされていないなら「プロセスにアタッチ」でデバッグ対象プロセスを切り替えると、CPUコードデバッグしか出来なくなります。 これは「オープン中のプロジェクトと、デバッグ対象プロセスのソースファイルを、お互いに関連付けする方法がない」ので、たとえソースファイルがカレントフォルダにあったとしても、ソースレベルデバッグは出来ません。 Boland C++5では「複数のプロセスのソースコードを、1つのプロジェクトグループに含める」と言う方法で「オープン中のプロジェクトと、デバッグ対象プロセスのソースファイルを、お互いに関連付けする」という事をしています。
お礼
回答ありがとうございます。 普通にできそうな感じなのですが、VCではプロセスアタッチすると新しくワークスペースが起動してCPUデバッグになってしまうんです。
- redfox63
- ベストアンサー率71% (1325/1856)
デバッグ情報があるEXEファイルなのでしょうか? ReleaseモードでビルドされたEXEには ソースとの対応データがありませんのでご質問のような状態になりそうですが … PDBファイルが実行(EXE)ファイルと同じフォルダーにありますか?
補足
回答ありがとうございます。 新規作成ープロジェクトWin32Application-HellWorldアプリケーションでソースを自動生成し、DebugモードでコンパイルされたEXEをDebugフォルダから実行して、プロセスアタッチしたんですがダメでした。 もちろん、EXEのpdbファイルもvc60.pdbもあるフォルダです。 VC6でできないというわけではなく、普通はできるのでしょうか?
お礼
回答ありがとうございます。 _asm{ int 3 }を試してみたところ対象のソースのみ表示されるようになりました。 ただ、プロジェクトのファイルは全て表示されなくなってしまうんですね。 これはEXEの場合、仕方のないということなのでしょうか?