質問者
デバッグできない

質問
-
VC++2005で簡単なC++プログラミングを行っています.
空のプロジェクトを作成し,ソースファイルにC++ファイルを追加した,シンプルなソリューションです.
デバッグモードを試そうと思い,以下のプログラムを作成し,●印の場所で
右クリック - ブレークポイントの挿入
でブレークポイントを設定しました.
#include <stdio.h>
void main(void)
{
int i;
● for(i=0;i<10;i++)
{
printf("%d\n",i);
}
}そしてデバッグの開始を実行しましたが,すぐ終了してしまいました.そこでステップインを試したところ,ダイアログボックスが表示され
”呼び出し履歴のフレームにシンボルは読み込まれません。ソースコードを表示できません。”
”OK””逆アセンブルを表示する”
と出てきてしまいました.
従来のVC++6.0のような感覚でデバッグできないのでしょうか?
何か設定が間違っているのでしょうか?
御教示の程,よろしくお願いします.
すべての返信
-
蒼の洞窟さん
開発環境は以下の通りになっています。
OS : Windows XP Professional Version 2002 Service Pack 2
VS2005 : Visual Studio 2005 Academic Edition Version 2.0.50727
VC6.0 : Visual C++ 6.0 Professional Edition Service Pack 6適用済み
また、同じようにプロジェクトを構築しても、ブレークポイントでとまってくれませんでした。
ステップ実行すると、ブレークポイントで止まるのですが、逆アセンブラ表示になってしまいました。蒼の洞窟 さんからの引用 あ、もしかしたら
しゅう さんからの引用 空のプロジェクトを作成し,ソースファイルにC++ファイルを追加した,シンプルなソリューションです.
が問題なのかも。
空のプロジェクトではなくて、VC6と同じということならば、Win32~のプロジェクトからつくらないとダメとか
その通りでした!以下にどのようにしてデバッグ処理を行うことができたか記します。
今までは
[新規作成] - [プロジェクト] - [Visual C++] - [全般] - 空のプロジェクト
で生成していました。
そこでWin32~のプロジェクトで作ろうと思い、
[新規作成] - [プロジェクト] - [Visual C++] - [Win32] - Win32 コンソール アプリケーション
を選択し、"Win32 アプリケーション ウィザード"で
アプリケーションの種類 : コンソール アプリケーション
追加のオプション : 空のプロジェクトにして作成しました。
そして同じソースコードを入力し、ブレークポイントを設定したら、
デバッグを行うことができました!!どうもありがとうございました。しかし、空のプロジェクトとは一体何を行うためのものなのでしょう?
また、VC6.0がWin32のコンソールアプリケーションを作成していたということを初めて知りました。ありがとうございました。 -
単にPDBファイルが作られてなかっただけでは?
ソースをよく見ると、VC2005で作られたコンソールアプリケーションだと、_tmainのはずなのにmainになってます。
と言う事は、VC2005で作成したプロジェクトではなくて、VC6で作成したプロジェクトをVC2005にコンバートしたような気がします。(推測で外れていたらごめんなさい)
VC6のプロジェクトをVC2005でデバッグすると、デバッグ出来ない場合が生じます。
大きな違いは、VC6のReleaseはデバッグ機能がないが、VC2005のReleaseはデバッグ出来ます。
違いは、拡張子(.PDB)を作らないんです。
このPDBファイルにデバッグ情報が入っていて、このファイルがないときに問題の現象が起こるような体験があるんです。
確認して欲しいのは、先ず本当にデバッグモードになっているか?(メニューのビルドの構成マネージャーを選択して、出てくるダイアログの2箇所とも本当にDEBUGになっているか?)
次に、DEBUGフォルダーにVC80.PDBとプログラム名.PDBが両方とも存在するか?
それ以外に怪しいのが、メニューのツールのオプションを選択し、デバッグタグの全般を選択して「元のバージョンと完全に一致するソースを必要とする」にチェックが入ってないか?
あと、VC2005でリビルドしてない?
こんなとこです。年寄りの経験で外れていたら、ごめんなさいね。