无法读取 Windbg 中的故障转储

发布于 2024-12-16 12:48:44 字数 1226 浏览 6 评论 0原文

我的程序中出现了 stackoverflow 异常,该异常可能源自第三方库 microsoft.sharepoint.client.runtime.dll。

使用 adplus 创建故障转储,我面临的问题是,当我在 Windbg 中打开它时,我很难从中获取任何信息。这是我得到的回复:

> 0:000> .restart /f

Loading Dump File [C:\symbols\FULLDUMP_FirstChance_epr_Process_Shut_Down_DocumentumMigrator.exe__0234_2011-11-17_15-19-59-426_0d80.dmp]
User Mini Dump File with Full Memory: Only application data is available

Comment: 'FirstChance_epr_Process_Shut_Down'
Symbol search path is: C:\symbols
Executable search path is: 
Windows 7 Version 7601 (Service Pack 1) MP (8 procs) Free x64
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Machine Name:
Debug session time: Thu Nov 17 15:19:59.000 2011 (UTC + 2:00)
System Uptime: 2 days 2:44:48.177
Process Uptime: 0 days 0:13:05.000
.........................................WARNING: rsaenh overlaps cryptsp
.................WARNING: rasman overlaps apphelp
......
..WARNING: webio overlaps winhttp
.WARNING: credssp overlaps mswsock
.WARNING: IPHLPAPI overlaps mswsock
.WARNING: winnsi overlaps mswsock
............
wow64cpu!CpupSyscallStub+0x9:
00000000`74e42e09 c3              ret

关于如何从转储中获取更多信息,或者如何使用它来查找发生 stackoverflow 错误的位置,有什么想法吗?

I have been getting a stackoverflow exception in my program which may be originating from a thirdparty libary, microsoft.sharepoint.client.runtime.dll.

Using adplus to create the crash dump, I'm facing the problem that I'm struggling to get any information from it when i open it in windbg. This is what I get as a response:

> 0:000> .restart /f

Loading Dump File [C:\symbols\FULLDUMP_FirstChance_epr_Process_Shut_Down_DocumentumMigrator.exe__0234_2011-11-17_15-19-59-426_0d80.dmp]
User Mini Dump File with Full Memory: Only application data is available

Comment: 'FirstChance_epr_Process_Shut_Down'
Symbol search path is: C:\symbols
Executable search path is: 
Windows 7 Version 7601 (Service Pack 1) MP (8 procs) Free x64
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Machine Name:
Debug session time: Thu Nov 17 15:19:59.000 2011 (UTC + 2:00)
System Uptime: 2 days 2:44:48.177
Process Uptime: 0 days 0:13:05.000
.........................................WARNING: rsaenh overlaps cryptsp
.................WARNING: rasman overlaps apphelp
......
..WARNING: webio overlaps winhttp
.WARNING: credssp overlaps mswsock
.WARNING: IPHLPAPI overlaps mswsock
.WARNING: winnsi overlaps mswsock
............
wow64cpu!CpupSyscallStub+0x9:
00000000`74e42e09 c3              ret

Any ideas as to how i can get more information from the dump, or how to use it to find where my stackoverflow error is occuring?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萌无敌 2024-12-23 12:48:44

您面临的问题是该进程是 32 位的,但您正在 64 位上运行,因此您的转储是 64 位转储。要使用转储,您必须运行以下命令:

.load wow64exts
.effmach x86
!analyze -v

最后一个命令应该为您提供有意义的堆栈跟踪。

The problem you are facing is that the process is 32-bit, but you are running on 64-bit, therefore your dump is a 64-bit dump. To make use of the dump you have to run the following commands:

.load wow64exts
.effmach x86
!analyze -v

The last command should give you a meaningful stack trace.

触ぅ动初心 2024-12-23 12:48:44

该页面提供了大量有用的信息和分析问题的方法。
http:// www.dumpanalysis.org/blog/index.php/2007/09/11/crash-dump-analysis-patterns-part-26/

This page provides lots of useful information and method to analyze the problem.
http://www.dumpanalysis.org/blog/index.php/2007/09/11/crash-dump-analysis-patterns-part-26/

做个ˇ局外人 2024-12-23 12:48:44

您没有提到您的代码是托管还是非托管。假设它不受管理。在调试器中:

.symfix
.reload
~*kb

查看所有线程的调用堆栈并识别导致 SO 的线程。用SO很容易识别线程,因为调用堆栈会特别长。使用命令 ~s 切换到该线程,其中 是线程号,使用命令 k 200 转储更多调用堆栈,最多转储 200 行调用堆。在调用堆栈的最底部,您应该能够看到发起嵌套循环的代码。

如果您的代码是托管的,请使用 SOS 扩展来转储调用堆栈。

You didn't mention if your code is managed or unmanaged. Assuming it is unmanaged. In debugger:

.symfix
.reload
~*kb

Look through the call stack for all threads and identify thread that caused SO. It is easy to identify the thread with SO, because the call stack will be extra long. Switch to that thread using command ~<N>s, where is thread number, dump more of the call stack using command k 200 to dump up to 200 lines of call stack. At the very bottom of the call stack you should be able to see the code that originated the nested loop.

If your code is managed, use SOS extension to dump call stacks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文