IIS崩溃并重新启动而不会丢弃小型转储

时间:2011-06-08 22:21:08

标签: asp.net iis-7 windbg

我有一个艰难的场景我正在尝试调试...在Web表单页面上,当我单击提交时,Web服务器遇到一些错误并重新启动w3svc进程。

我没有看到任何堆栈跟踪转储到事件日志中。 Windows应用程序日志中唯一的条目是:

  

错误应用程序名称:w3wp.exe,版本:7.5.7600.16385,时间戳:0x4a5bd0eb

     

错误模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdfe0

     

异常代码:0xe053534f

没有为我创建小型转储以将windbg附加到...

如何调试我的问题?

3 个答案:

答案 0 :(得分:1)

我怀疑你做了一个像

这样的循环调用
public string sMyText
{
   get {return sMyText;}
   set {sMyText = value;}
} 

然后调用sMyText

或类似

protected override void OnLoad(EventArgs e)
{
  base.OnInit(e);
}

或类似

Server.Transfer("TheSamePage.aspx");

在这种情况下,崩溃不会调用minidump。 你可以运行process explorer并看看你的游泳池是否正在吃cpu直到崩溃?

答案 1 :(得分:1)

要为崩溃的应用程序创建内存转储,可以使用DebugDiag或adplus。要么监视进程,要么在崩溃发生时生成转储文件。 DebugDiag还可以分析转储文件并生成问题报告(类似于WinDbg中的“!analyze -v”命令。)

DebugDiag可以下载here

您应该找到使用Windows调试工具安装的adplus - 这是与WinDbg相同的安装程序。

答案 2 :(得分:0)

我会使用像Procdump这样的东西来获取进程时的内存转储 终止并查找异常和调用堆栈。

  

-t在进程终止时写入转储。

仅供参考...你在EventViewer中看到的是Watson buckets,它告诉哪个应用程序和模块有一个未处理的异常。从您的日志看起来kernelBase是故障模块。