我有一个艰难的场景我正在尝试调试...在Web表单页面上,当我单击提交时,Web服务器遇到一些错误并重新启动w3svc进程。
我没有看到任何堆栈跟踪转储到事件日志中。 Windows应用程序日志中唯一的条目是:
错误应用程序名称:w3wp.exe,版本:7.5.7600.16385,时间戳:0x4a5bd0eb
错误模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdfe0
异常代码:0xe053534f
没有为我创建小型转储以将windbg附加到...
如何调试我的问题?
答案 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
是故障模块。