!ClrStack - ASP.NET MVC应用程序中的调用显示<no data =“”> </no>

时间:2015-04-20 15:24:26

标签: asp.net-mvc debugging windbg

将WinDbg附加到我的ASP.NET MVC应用程序并在发生异常时调用!ClrStack -a时,我看不到本地或参数值。我看到的只有<NO DATA>

为什么会这样?我可以检查项目中的哪些设置?

我很欣赏我可以通过!dso调用查看问题中的对象,并在输出中找到我感兴趣的对象,但这对我来说不是一个好的解决方案,因为我需要确切地知道对象是什么传递给一个特定的函数 - 我不想花费多少时间选择对象地址并对它们进行!do

该应用程序以DEBUG模式构建。查看堆栈时,所有方法和类型都出现在输出中,所以我假设符号没有问题,但我愿意尝试任何必要的命令来重新同步或更新符号(如果需要)。 p>

CPU架构为ANY CPU,我们正在运行Windows Server 2008 R2 64位。

我尝试使用SOSEX的!mk !mframe!mdv命令来列出param和locals,但它们显示<UNAVAILABLE>

编辑:

以下是我看到的输出类型示例:

Sample clrstack output with no data appearing

1 个答案:

答案 0 :(得分:1)

  

为什么会这样?

对于由JIT编译器(您的情况)或发布版本(由编译器)优化的代码,会发生这种情况。

  

我可以查看项目中的哪些设置?

如果尚未完成,请务必检查符号路径并添加Microsoft符号。

.symfix c:\debug\symbols
.reload

接下来,检查WinDbg是否可以使用lm找到应用程序的符号。它应该显示&#34;私人pdb符号&#34;。如果没有,请运行

.sympath+ <path to your PDBs>

除此之外,SOSEX让您的生活更轻松。请尝试以下方法:

!mk; *** Managed stack
!mframe <frame>; *** Switch to frame
!mdv; *** Dump values - This will at least give you the type
!mdv <frame>; *** Same as before but include !mframe
!mdso; *** Similar to !dso