Windbg 符号错误
Windbg symbol error
我正在尝试使用 WinDbg 调试应用程序。服务器无法访问 Internet,因此我无法使用 Microsoft Symbol 服务器。我继续下载了 Server 2012 R2 Retail 的符号。将它们移至服务器,并安装到 C:\Symbols。
当我尝试 运行 调试器时,我得到以下输出。
CommandLine: C:\actionsync\ActionSync\ActionSync.exe
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred srv*
DBGHELP: Symbol Search Path: .sympath srv*c:\symbols*
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred .sympath srv*c:\Symbols*
DBGHELP: Symbol Search Path: .sympath srv*c:\symbols*
DBGHELP: Symbol Search Path: .sympath srv*c:\symbols*
Symbol search path is: .sympath srv*c:\Symbols*
Executable search path is: srv*
DBGHELP: SharedUserData - virtual symbol module
ModLoad: 00ec0000 00ecc000 ActionSync.exe
ModLoad: 77120000 7728f000 ntdll.dll
ModLoad: 6fc30000 6fc86000 C:\Windows\SysWOW64\MSCOREE.DLL
ModLoad: 74de0000 74f20000 C:\Windows\SysWOW64\KERNEL32.dll
ModLoad: 74f20000 74ff7000 C:\Windows\SysWOW64\KERNELBASE.dll
(1054.478): Break instruction exception - code 80000003 (first chance)
DBGHELP: Invalid path: '.sympath srv*c:\symbols*'
DBGHELP: C:\Windows\SYSTEM32\wntdll.pdb - file not found
DBGHELP: wntdll.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
DBGHELP: ntdll - export symbols
eax=00000000 ebx=00000000 ecx=7fdc0000 edx=00000000 esi=7ee16000 edi=00000000
eip=771d3c7d esp=0104f2f4 ebp=0104f320 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!LdrInitShimEngineDynamic+0x6dd:
771d3c7d cc int 3
我对使用 WinDbg 完全陌生。另外,我无法在这台机器上安装 VS。
据我所知,我已经正确设置了所有内容,但我仍然无法调试此应用程序。
如有任何帮助,我们将不胜感激。
编辑 1:
我根据 Thomas Weller 的评论更新了符号路径
这是输出
0:000> .sympath
Symbol search path is: .sympath srv*c:\Symbols*
Expanded Symbol search path is: .sympath srv*c:\symbols*
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred .sympath srv*c:\Symbols*
Error: Change all symbol paths attempts to access '.sympath c:\symbols' failed: 0x7b - The filename, directory name, or volume label syntax is incorrect.
************* Symbol Path validation summary **************
Response Time (ms) Location
Error 16 .sympath c:\symbols
DBGHELP: Symbol Search Path: .sympath c:\symbols
DBGHELP: Symbol Search Path: .sympath c:\symbols
0:000> .reload
Reloading current modules
.....
DBGHELP: Invalid path: '.sympath c:\symbols'
DBGHELP: C:\Windows\SYSTEM32\wntdll.pdb - file not found
DBGHELP: wntdll.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
DBGHELP: ntdll - export symbols
************* Symbol Loading Error Summary **************
Module name Error
ntdll All symbol search paths were invalid
Please check your symbol search path.
The following location did not respond and were excluded during symbol loading:
.sympath c:\symbols
编辑 2:
所以,sympath 似乎是区分大小写的。
我更新了同情心C:\Symbols
这是输出。
************* Symbol Path validation summary **************
Response Time (ms) Location
OK c:\Symbols
DBGHELP: Symbol Search Path: c:\symbols
DBGHELP: Symbol Search Path: c:\symbols
0:000> .reload
Reloading current modules
.....
DBGHELP: c:\symbols\wntdll.pdb - file not found
DBGHELP: c:\symbols\dll\wntdll.pdb - file not found
DBGHELP: c:\symbols\symbols\dll\wntdll.pdb - file not found
DBGHELP: C:\Windows\SYSTEM32\wntdll.pdb - file not found
DBGHELP: wntdll.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
DBGHELP: ntdll - export symbols
************* Symbol Loading Error Summary **************
Module name Error
ntdll PDB not found : c:\symbols\symbols\dll\wntdll.pdb
Unable to locate the .pdb file in this location
对于这两种解决方案,您都需要 WinDbg 的副本(不一定是安装)。您在 WinDbg 文件夹中找到 symchk
。
特定转储/特定调试会话的解决方案
在您调试的机器上,使用 .dump
创建故障转储文件。如果您已有故障转储文件,请跳过此步骤。
在命令提示符下,创建清单文件,即包含有关要下载的符号的信息的文件
symchk /id <dumpfile>.dmp /om D:\symbols.manifest
/id
用于输入 = dump
/om
用于输出 = 清单
将该清单文件传输到可以访问 Internet 的计算机上。
上网机然后运行
symchk /im X:\symbols.manifest /s srv*X:\downloadedsymbols\*http://msdl.microsoft.com/download/symbols /od
在命令提示符下。
/im
用于输入 = 清单
/od
用于输出详细信息(如详细信息)
在没有互联网访问的情况下将符号传回机器。将它们复制到 新文件夹,例如c:\downloadedsymbols
,而不是 c:\symbols
。不要使用现有的符号路径,因为 n 层布局可能不匹配。
在 WinDbg 中打开故障转储。
修复符号
.sympath C:\downloadedsymbols
也许
.reload /f
在没有互联网的情况下检索机器所有符号的解决方案
注意:此过程可能需要很长时间,因为它可能会下载数千个符号
在命令提示符下,运行
symchk /r /if %windir% /om D:\windir.manifest
/r
用于递归
/if
用于输入 = 文件
/om
用于输出 = 清单
将该清单文件传输到具有 Internet 访问权限的另一台计算机上。
上网机,运行
symchk /im X:\windir.manifest /s srv*X:\winsymbols\*http://msdl.microsoft.com/download/symbols /od
/im
用于输入 = 清单
/od
用于输出详细信息(如详细信息)
在没有互联网访问的情况下将符号传回机器。将它们复制到 新文件夹,例如c:\winsymbols
,而不是 c:\symbols
。不要使用现有的符号路径,因为 n 层布局可能不匹配。
使用符号
.sympath C:\winsymbols
.reload
我正在尝试使用 WinDbg 调试应用程序。服务器无法访问 Internet,因此我无法使用 Microsoft Symbol 服务器。我继续下载了 Server 2012 R2 Retail 的符号。将它们移至服务器,并安装到 C:\Symbols。
当我尝试 运行 调试器时,我得到以下输出。
CommandLine: C:\actionsync\ActionSync\ActionSync.exe
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred srv*
DBGHELP: Symbol Search Path: .sympath srv*c:\symbols*
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred .sympath srv*c:\Symbols*
DBGHELP: Symbol Search Path: .sympath srv*c:\symbols*
DBGHELP: Symbol Search Path: .sympath srv*c:\symbols*
Symbol search path is: .sympath srv*c:\Symbols*
Executable search path is: srv*
DBGHELP: SharedUserData - virtual symbol module
ModLoad: 00ec0000 00ecc000 ActionSync.exe
ModLoad: 77120000 7728f000 ntdll.dll
ModLoad: 6fc30000 6fc86000 C:\Windows\SysWOW64\MSCOREE.DLL
ModLoad: 74de0000 74f20000 C:\Windows\SysWOW64\KERNEL32.dll
ModLoad: 74f20000 74ff7000 C:\Windows\SysWOW64\KERNELBASE.dll
(1054.478): Break instruction exception - code 80000003 (first chance)
DBGHELP: Invalid path: '.sympath srv*c:\symbols*'
DBGHELP: C:\Windows\SYSTEM32\wntdll.pdb - file not found
DBGHELP: wntdll.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
DBGHELP: ntdll - export symbols
eax=00000000 ebx=00000000 ecx=7fdc0000 edx=00000000 esi=7ee16000 edi=00000000
eip=771d3c7d esp=0104f2f4 ebp=0104f320 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!LdrInitShimEngineDynamic+0x6dd:
771d3c7d cc int 3
我对使用 WinDbg 完全陌生。另外,我无法在这台机器上安装 VS。
据我所知,我已经正确设置了所有内容,但我仍然无法调试此应用程序。
如有任何帮助,我们将不胜感激。
编辑 1:
我根据 Thomas Weller 的评论更新了符号路径
这是输出
0:000> .sympath
Symbol search path is: .sympath srv*c:\Symbols*
Expanded Symbol search path is: .sympath srv*c:\symbols*
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred .sympath srv*c:\Symbols*
Error: Change all symbol paths attempts to access '.sympath c:\symbols' failed: 0x7b - The filename, directory name, or volume label syntax is incorrect.
************* Symbol Path validation summary **************
Response Time (ms) Location
Error 16 .sympath c:\symbols
DBGHELP: Symbol Search Path: .sympath c:\symbols
DBGHELP: Symbol Search Path: .sympath c:\symbols
0:000> .reload
Reloading current modules
.....
DBGHELP: Invalid path: '.sympath c:\symbols'
DBGHELP: C:\Windows\SYSTEM32\wntdll.pdb - file not found
DBGHELP: wntdll.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
DBGHELP: ntdll - export symbols
************* Symbol Loading Error Summary **************
Module name Error
ntdll All symbol search paths were invalid
Please check your symbol search path.
The following location did not respond and were excluded during symbol loading:
.sympath c:\symbols
编辑 2:
所以,sympath 似乎是区分大小写的。
我更新了同情心C:\Symbols
这是输出。
************* Symbol Path validation summary **************
Response Time (ms) Location
OK c:\Symbols
DBGHELP: Symbol Search Path: c:\symbols
DBGHELP: Symbol Search Path: c:\symbols
0:000> .reload
Reloading current modules
.....
DBGHELP: c:\symbols\wntdll.pdb - file not found
DBGHELP: c:\symbols\dll\wntdll.pdb - file not found
DBGHELP: c:\symbols\symbols\dll\wntdll.pdb - file not found
DBGHELP: C:\Windows\SYSTEM32\wntdll.pdb - file not found
DBGHELP: wntdll.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
DBGHELP: ntdll - export symbols
************* Symbol Loading Error Summary **************
Module name Error
ntdll PDB not found : c:\symbols\symbols\dll\wntdll.pdb
Unable to locate the .pdb file in this location
对于这两种解决方案,您都需要 WinDbg 的副本(不一定是安装)。您在 WinDbg 文件夹中找到 symchk
。
特定转储/特定调试会话的解决方案
在您调试的机器上,使用
.dump
创建故障转储文件。如果您已有故障转储文件,请跳过此步骤。在命令提示符下,创建清单文件,即包含有关要下载的符号的信息的文件
symchk /id <dumpfile>.dmp /om D:\symbols.manifest
/id
用于输入 = dump/om
用于输出 = 清单将该清单文件传输到可以访问 Internet 的计算机上。
上网机然后运行
symchk /im X:\symbols.manifest /s srv*X:\downloadedsymbols\*http://msdl.microsoft.com/download/symbols /od
在命令提示符下。
/im
用于输入 = 清单/od
用于输出详细信息(如详细信息)在没有互联网访问的情况下将符号传回机器。将它们复制到 新文件夹,例如
c:\downloadedsymbols
,而不是c:\symbols
。不要使用现有的符号路径,因为 n 层布局可能不匹配。在 WinDbg 中打开故障转储。
修复符号
.sympath C:\downloadedsymbols
也许
.reload /f
在没有互联网的情况下检索机器所有符号的解决方案
注意:此过程可能需要很长时间,因为它可能会下载数千个符号
在命令提示符下,运行
symchk /r /if %windir% /om D:\windir.manifest
/r
用于递归/if
用于输入 = 文件/om
用于输出 = 清单将该清单文件传输到具有 Internet 访问权限的另一台计算机上。
上网机,运行
symchk /im X:\windir.manifest /s srv*X:\winsymbols\*http://msdl.microsoft.com/download/symbols /od
/im
用于输入 = 清单/od
用于输出详细信息(如详细信息)在没有互联网访问的情况下将符号传回机器。将它们复制到 新文件夹,例如
c:\winsymbols
,而不是c:\symbols
。不要使用现有的符号路径,因为 n 层布局可能不匹配。使用符号
.sympath C:\winsymbols .reload