我在 VS 2013 中有一个 C 项目,我想对其进行调试。我已经配置了 VS,它会自动加载系统 DLL 的符号。除了 msctf.dll 之外,这确实有效:
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winspool.drv'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Symbols loaded.
'Programm_NT.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Cannot find or open the PDB file.
The program '[2216] Programm_NT.exe' has exited with code 1 (0x1).
我试图用我在 WWW 中找到的所有方法(在选项中,使用 symsrv.ini、注册表 hack 等)从符号加载中排除这个特定的 DLL,但 VS 不在乎并且总是想要加载的PDB。
那么,问题是,为什么无法从 MS 符号服务器加载 msctf.dll 的 pdb?
最佳答案
Create a dump file您的应用程序(Taskmgr 或 ProcessExplorer)并在 Windbg 中打开它(Windows SDK ->调试工具的一部分)。现在打开dmp,configure the debug symbols并运行 !sym Noise
将 Windbg 配置为显示详细数据。现在运行 .reload/f/v msctf.dll;lmvm msctf
加载符号并查找输出。
关于c - 从符号服务器加载 msctf.dll 的 pdb 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30798929/