• 締切済み

DBGファイルが見つからないか開けません。の意味とは?

こんにちは。 初歩的な質問をさせて頂きます。 VC++.NETを購入しまして、「今からはじめる・・」のテキスト通りにHellow,Worldの表示をコンパイル・実行させました。 その時に、下記のような警告メッセージが出てきます。 (メッセージ4行の内、2行を抜粋) 'test.exe': 'C:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。 プログラム '[708] test.exe: ネイティブ' はコード 0 (0x0) で終了しました。 デバック用ファイルがないと言うことのように思いますが、この意味は何でしょうか。 また、表示させないようにする方法を教えてください。

みんなの回答

  • z64423
  • ベストアンサー率53% (26/49)
回答No.1

自分でプログラムを作ってビルド (コンパイル)すると   *.exe (または *.dll)   *.pdb というファイルができます。 ※*.obj 等は省略してます。 *.exe/dll は実行ファイル、*.pdb がデバッグ情報ファイルです。 この *.pdb ファイルには、ソースファイル名とか関数名、引数の数、 変数名などのデバッグのための情報が入っています。 そのおかげで、デバッガ (Visual-C++デバッガ) で実行したときに、 ブレークポイントで止めたり、ステップ実行できたり、変数の値を 表示したりできるわけです。 デバッガはデバッグ対象の *.exe/dll を読み込むときに、 依存関係のあるほかの exe/dll も読み込み、 同時にそのデバッグ情報ファイル *.pdb/dbg を探します。 見つかった場合は読み込み、 無い場合は「見つかりませんでした」と表示します。 どんなプログラムも Windows 上で動いている限りは OS の API を 呼び出します。 その API は Windows に最初から入っている exe や dll (ntdll.dll など) の 中にあります (つまり自作 exe/dll と依存関係にあります)。 そして、Windows の exe や dll にはデバッグ情報ファイル *.pdb (または *.dbg) ファイルは付いてきません。 ですから、「必要な DBG ファイルが見つからないか、開けません。」 というメッセージは必ず表示されてしまいます。 手元には Visual-C++6.0 しかないので .Net の場合も同じか 分かりませんが、*.exe/dll ファイルを右クリックして出てくるメニューから 「View Dependencies」を選ぶと、 その exe/dll が使用する(依存関係がある) dll がすべて表示されます。 ※Dependency(depends.exe) は http://www.dependencywalker.com/  からもダウンロードできます。 で、「見つかりません」メッセージ表示させない方法ですが、 "デバッグ情報ファイル *.pdb/dbg が無くても表示させない"方法は分かりません。 ですが、Windows 側 exe/dll のデバッグ情報をインストールすれば、メッセージは出なくなります。 その手順や意味は http://www.microsoft.com/japan/whdc/DevTools/Debugging/default.mspx に書いてありますが、自分でやって見たものの、うまくいかなかったため、 説明はやめときます (失礼)。

tosi0000
質問者

お礼

詳しい説明有難う御座います。 大変参考になりました。

関連するQ&A