ntdll.dll 没有 PDB 文件
Posted
技术标签:
【中文标题】ntdll.dll 没有 PDB 文件【英文标题】:no PDB file for ntdll.dll 【发布时间】:2012-11-14 16:27:16 【问题描述】:尝试调试我正在开发的 dll 项目。我在尝试使用主机应用程序加载此 dll 时收到消息框 Debugging information for 'ntdll.dll' cannot be found or does not match. Cannot find or open the PDB file
。如何解决这个问题?
经过一些实验并将 VS2010 设置为从服务器获取符号后,我在构建 dll 时收到以下消息:
DEMO.exe':已加载“C:\Windows\System32\ntdll.dll”,已加载符号(已删除源信息)。 DEMO.exe':已加载“C:\Windows\System32\mscoree.dll”,已加载符号(已删除源信息)。 DEMO.exe':加载了'C:\Windows\System32\kernel32.dll',加载了符号(源信息被剥离)。 DEMO.exe': 加载'C:\Windows\System32\KernelBase.dll',加载符号(源信息被剥离)。
但在运行调试时仍然描述了消息框。
【问题讨论】:
您是否使用Microsoft Symbol Server 来获取调试符号文件?如果是这种情况,可能包括 ntdll.dll 在内的某些文件尚未下载。请参阅此处 (support.microsoft.com/kb/311503) 了解更多信息。 我是 Symbol Server 的新手。我正在使用默认的 VS2010 专业安装。我只是想知道为什么从同一张 CD 安装的另一台装有 Visual Studio 的机器没有出现这些消息。 我更新了问题描述。我已下载所需的 PDB 文件,但仍有问题。 您忘记准确描述您为访问此消息框所做的工作。很可能您实际上遇到了异常,并且调试器正试图向您展示发生了什么。由于您没有 Windows 操作系统的源代码,因此无法这样做。异常的下一个可能原因是您的程序正在破坏堆。在“输出”窗口中查看诊断消息。 下载的符号包不如 Microsoft 符号服务器有用,因为 Windows 更新经常修改 ntdll.dll 和其他系统 DLL,这意味着下载的 PDB 已过期。使用符号服务器。 【参考方案1】:您可以有多种选择。
-
下载微软提供的符号包。这将为所有系统库下载 PDB。将其解压缩到“c:\symbolcache”
将符号路径设置为 SRV*c:\symbolcache*http://msdl.microsoft.com/download/symbols。在这种情况下,这将下载 PDB 文件并将其存储到“c:\symbolcache”(如果不存在)。
然后您必须将“c:\symbolcache”设置为符号文件路径到您正在使用的任何故障转储分析工具中。
【讨论】:
以上是关于ntdll.dll 没有 PDB 文件的主要内容,如果未能解决你的问题,请参考以下文章
“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开PDB文件的原因?
解决“C:WindowsSystem32 tdll.dll”。无法查找或打开 PDB 文件问题
VS2012 每次编译程序都会出现3个无法查找或打开 PDB 文件。