【发布时间】:2012-05-04 16:33:12
【问题描述】:
我通过 Adplus 附加了一个进程(在我的 iis 中我运行了一个网站)
C:\Program Files (x86)\Debugging Tools for Windows (x86)>ADPlus -crash -pn w3wp .exe -o C:\dumps
下面是重现该网站stackoverflow异常的代码:
protected void Page_Load(object sender, EventArgs e)
{
}
public void Hello()
{
Hello();
}
protected void Button_Test_Click(object sender, EventArgs e)
{
Hello();
}
为我创建的转储位于:
C:\Dumps\Crash_Mode__Date_05-04-2012__Time_21-44-2020\PID-12452__W3WP.EXE_DefaultAppPool__1st_chance_Process_Shut_Down__full_2bc0_2012-05-04_21-45-53-704_30a4
我在 windbg 中打开了这个转储并运行了这些命令
0:000> .loadby sos clr
0:000> !clrstack
我收到以下消息
Unable to walk the managed stack. The current thread is likely not a
managed thread. You can run !threads to get a list of managed threads in
the process
你能帮我修一下吗?如何追踪错误的位置?
【问题讨论】:
-
当前线程可能不是托管线程。您可以运行
!threads来获取进程中的托管线程列表。 -
这就是我所困惑的。我运行了一个网络应用程序。单击浏览器一页上的按钮,应用程序将关闭。非托管线程在这里扮演什么角色?
-
所有托管应用程序都托管在一个进程中。没有“托管过程”的概念。因此,所有托管应用程序都将具有非托管线程。
-
另外,你为什么要唱 x86 工具?你不是真的在运行 32 位代码,是吗?
-
如何获取转储的堆栈跟踪信息?是的,在我的任务管理器中,它显示 w3wp.exe*32 正在运行。
标签: c# asp.net .net windbg adplus