事后崩溃转储调试没有在Symbol Server中具有Windows DLL的确切版
在我的应用程序中,我使用MiniDumpWriteDump函数(请参阅dbghelp.dll)在应用程序崩溃时编写崩溃转储文件.
我还使用符号服务器来存储我的所有可执行文件和pdb文件,这样每当客户向我发送崩溃转储文件时,调试器会自动获取正确版本的可执行文件和调试信息. 我还将Windows DLL(ntdll.dll,kernel32.dll,…)及其调试信息存储在符号服务器中(使用SymChk).调试信息从Microsoft的公共符号服务器获取. 大部分时间这种方法都很完美,除非: >客户在其中一个Windows DLL中崩溃 这是因为在Symbol Server中存储每个Windows DLL的每种风格都是完全无法解决的(特别是每周补丁). 因此,如果客户崩溃,比如NTDLL.DLL的5.2.123.456版本,我没有将这个DLL的确切版本放在我的符号服务器中,那么我就卡住了.甚至微软的公共符号服务器也无济于事,因为它只提供调试信息,而不是DLL本身. 我目前的解决方案是向客户询问他的DLL,但这并不总是那么容易.因此,我正在寻找更好的解决方案. 有没有办法让调试器显示正确的调用堆栈,或加载特定DLL的调试信息,即使您没有DLL的确切版本? 或者,有没有办法获得所有(或重要的)Windows DLL(来自Microsoft)的所有版本? 编辑: 与此同时,我发现了解决这个问题的一种非常简单的方法. 解决方法
可以放松WinDbg的符号分辨率;看到我的
answer到类似的问题.另一方面,我在这里提出的解决方案依赖于这样的事实:除了具有标识其调试符号的不同GUID之外,DLL是相同的.不同版本的DLL可能会有不同的二进制文件,因此即使您可以加载它们,符号也可能无法正确匹配.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-xp – 如何修复“TCP / IP已达到安全限制…”事件消
- Windows – 如何让PowerShell保持命令窗口打开?
- windows – 如果没有找到文件,如何避免创建输出文件?
- Raspberry Pi 3 B+ 开箱基本配置(Windows环境下)
- windows – MEMORY_BASIC_INFORMATION结构中的BaseAddress和
- 部署 – 是否可以使用xcopy部署Microsoft ReportViewer Web
- win10下RabbitMQ的安装和配置
- .net – 确定已加载的程序集
- windows-server-2008 – 32位操作系统可以使用64位硬件的所
- 构建良好的Windows程序