如何调试.net致命执行引擎错误?

时间:2009-07-30 08:06:13

标签: sharepoint debugging com

作为开发人员,我正在尝试在我们全新的VMWare ESX服务器上设置开发环境。事情没有成功:在SharePoint Product&技术配置向导,应用程序刚刚消失,并在事件日志中发现以下错误:

.NET Runtime版本2.0.50727.3082 - 致命执行引擎错误(7A0979C6)(80131506)

现在我知道这一切听起来像是一个ServerFault.com风格的问题(以及一个非常通用的错误消息,谷歌上有很多类似的点击),当然我们 解决这个问题一种方式(安装/卸载服务包/修补程序,不同的操作系统版本,测试安装的各个元素,vm的不同设置等),但出于个人兴趣,我想更多地了解这个问题然后“安装修补程序XXYY,希望它消失”。我想知道:如何从编码员的角度处理此错误

  • 当出现此问题时,我可以以某种方式使调试器停止,或者手动将其指向报告的地址(在什么模块中)?
  • 我应该尝试安装Visual Studio,还是使用像windbg这样的低级工具?
  • 这些错误代码完全是什么?后者看起来像一个com错误。另一个是地址吗?
  • 我可以以某种方式开启更详细的错误报告吗?错误的.dll会很好。

你可以说我在.net环境中没有这个级别的调试经验,但我非常愿意学习。任何指针都是最受欢迎的!

P.S。当我尝试运行命令行配置工具psconfig来执行非UI配置时,大多数(如果不是所有)命令都会触发StackOverflowException。再说一次,我从哪里去?

1 个答案:

答案 0 :(得分:8)

简答:阅读Tess Ferrandez的博客。这包含许多有关调试.NET应用程序的宝贵指导,并指导您完成如何操作。

更长的答案......

在Visual Studio中

如果安装了Visual Studio,则可以尝试打破任何未处理的.NET异常。要启用此功能,请转到菜单并选择“调试”,“例外”并选中“公共语言运行时例外”。然后转到工具,选项,调试并取消选中启用我的代码。最后,附加到配置向导的过程(您显然需要先运行它),并且Visual Studio调试器将在异常发生时中断。

假设调试器中断(如果它没有附加到错误的进程),那么你应该有权访问调用堆栈,并且可以从方法名称做一些有关出错的猜测。然而,有可能这是混淆的,这将没有帮助。您还可以看到调试器已停止的当前MSIL指令。这是它开始超越我的地方,但有很好的参考,以帮助您了解代码中发生的事情。

没有Visual Studio

如果您没有Visual Studio或由于某种原因无法使调试器中断,则可以创建崩溃进程的转储。我知道有两种方法。一个是described by the Windows Server Performance Team使用好的'沃森博士。另一个是Mark Russinovich刚刚发布的一个名为ProcInfo的新工具,它可以自动创建一个通过未处理的异常崩溃的进程转储。可能还有其他方法。

获得转储后,您可以使用this KB article来帮助您进行调试。

<强>最后

回到上面的“简短回答”:阅读Tess的博客,进一步推进!这是一个很大的话题,她拥有我所发现的最好的资源。还有一个很好的post by Vincent Rothwell可能会有所帮助,但它确实是针对调试自己的代码。

顺便说一句 - 你不应该得到你的例外。这表明一个非常严重的问题。我会看看腐败,严重的硬件故障,并考虑重建。