Windows XP Professional バージョン 2002 Service Pack 3 で Microsoft Visual Studio 2005 Verison 8.0.50727.762 (SP.050727-7600) を使用して、'Foo' という C++ プロジェクトを作成しました。このプロジェクトを Foo.exe にビルドしました。次に、Foo.exe ファイルを Windows Server 2003 Enterprise Edition Service Pack 2 にコピーしました。問題なく動作します。
ここで、WinDbg:6.12.0002.663 X86 バージョン 5.2 を使用してデバッグを試みます。
シンボル パス、ソース パス、またはイメージ パスが設定されていません
[ファイル] > [実行可能ファイルを開くC:\foo\Foo.exe
] メニューから開くと、次のエラーが表示されます。
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
Foo.pdb は、Foo.exe が存在する同じフォルダーには存在しません。Foo.exe のエラーが表示されないのはなぜですか?
ld *
WinDbg でコマンドを実行すると、次のエラーが表示されます。
0:000> ld *
*** ERROR: Module load completed but symbols could not be loaded for Foo.exe
Symbols loaded for Foo
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\msvcrt.dll -
Symbols loaded for msvcrt
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\kernel32.dll -
Symbols loaded for kernel32
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_44262B86\MSVCR80.dll -
Symbols loaded for MSVCR80
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_44262B86\MSVCP80.dll -
Symbols loaded for MSVCP80
Symbols already loaded for ntdll
ここで、それを修正するための 2 つの試みを示しましょう。1つは機能し、もう1つは機能しませんでした。
Windows Server 2003 Service Pack 2 x86 リテール シンボルのダウンロードが機能しない
http://msdn.microsoft.com/en-us/windows/hardware/gg463028にアクセスして、以下をダウンロードしました。
Windows Server 2003 with Service Pack 2 x86 リテール シンボル、すべての言語(ファイル サイズ: 154 MB - ほとんどの顧客はこのパッケージを必要とします。)
私はそれを実行し、シンボルを にインストールしましたC:\Symbols
。WinDbg では、シンボル パスを次のように設定します。
C:\Symbols;C:\MySymbols
C:\MySymbols
Foo.pdb というファイル名を持つ Foo.exe のシンボルが含まれていました。
「ファイル > 実行可能ファイルを開くC:\foo\Foo.exe
」メニューから開くと、前のセクションで説明したのと同じエラーが発生しました。
ただし、今回はld *
コマンドのエラーが少なくなりました。
0:000> ld *
Symbols loaded for Foo
Symbols loaded for msvcrt
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\kernel32.dll -
Symbols loaded for kernel32
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_44262B86\MSVCR80.dll -
Symbols loaded for MSVCR80
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_44262B86\MSVCP80.dll -
Symbols loaded for MSVCP80
Symbols already loaded for ntdll
Microsoft Symbol Server を使用すると修正されました
今回はシンボルパスを次のように設定しました。
SRV*C:\MicrosoftSymbols*http://msdl.microsoft.com/download/symbols;C:\MySymbols
今、C:\foo\Foo.exe
「ファイル>実行可能ファイルを開く」メニューから開くと、エラーは発生しませんでした。C:\microsoftsymbols\ntdll.pdb\F7024C7F15FE4BEA992FF38BE58AC11C2\ntdll.pdb
自動的にダウンロードされていることがわかりました。
今回のld *
コマンドもエラーなく正常に実行されました。
0:000> ld *
Symbols loaded for Foo
Symbols loaded for msvcrt
Symbols loaded for kernel32
Symbols loaded for MSVCR80
Symbols loaded for MSVCP80
Symbols already loaded for ntdll
コマンドの実行中に、次の追加のシンボルが自動的にダウンロードされました。
C:\microsoftsymbols\kernel32.pdb\BE496DC9472F4438B080C70594D8F9CC2\kernel32.pdb
C:\microsoftsymbols\msvcp80.i386.pdb\E8A9423E890A4ADDB38F8F756268437C1\msvcp80.i386.pdb
C:\microsoftsymbols\msvcr80.i386.pdb\54C9E2F351544D1CB39517DC4B299EA81\msvcr80.i386.pdb
C:\microsoftsymbols\msvcrt.pdb\A7F38CEE7E684B94B7AA9FFFCAB446851\msvcrt.pdb
質問
- シンボル パスが指定されていない場合、Foo.exe のシンボル ファイルに関するエラーが表示されないのはなぜですか?
- Windows Server 2003 with Service Pack 2 x86 リテール シンボルをダウンロードし、そのパスをシンボル パスとして指定しても機能しないのはなぜですか?
詳しくは
私の質問に答えるのに役立つ場合は、winmsd.exe > システムの概要から取得したシステムの詳細を次に示します。
OS Name: Microsoft(R) Windows(R) Server 2003, Enterprise Edition
Version: 5.2.3790 Service Pack 2 Build 3790
Other OS Description : Not Available
OS Manufacturer: Microsoft Corporation
System Name: EULER
System Manufacturer: VMware, Inc.
System Model: VMware Virtual Platform
System Type: X86-based PC
Processor: x86 Family 16 Model 4 Stepping 2 AuthenticAMD ~2417 Mhz
Processor: x86 Family 16 Model 4 Stepping 2 AuthenticAMD ~2416 Mhz
BIOS Version/Date: Phoenix Technologies LTD 6.00, 7/22/2008
SMBIOS Version: 2.4
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32
Boot Device: \Device\HarddiskVolume1
Locale: United States
Hardware Abstraction Layer: Version = "5.2.3790.3959 (srv03_sp2_rtm.070216-1710)"
User Name: Not Available
Time Zone: India Standard Time
Total Physical Memory: 3,839.45 MB
Available Physical Memory: 1.56 GB
Total Virtual Memory: 5.60 GB
Available Virtual Memory: 3.33 GB
Page File Space: 2.00 GB
Page File: C:\pagefile.sys