是否可以将系统.NET DLL调试为未经优化的?

sco*_*obi 9 .net debugging

我正在尝试在.NET Framework中调试一些代码.不幸的是,许多变量都被优化掉了,由于流优化,我无法可靠地设置指令指针.

是否有可能强制运行时不使用.NET系统DLL的ngen'd版本,而是使用MSIL,强制优化为'off'?

注意:我尝试使用INI技巧来设置AllowOptimize = false,但它没有任何区别.

Den*_*kem 12

这是另一种选择(来自http://martin.bz/asp-net-mvc-source-debugging-the-easy-way):

转到System.Web.Mvc .dll所在的目录:

C:\ WINDOWS \装配\ GAC_MSIL\System.Web.Mvc\2.0.0.0__31bf3856ad364e35 \

创建文件System.Web.Mvc.ini

[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0
Run Code Online (Sandbox Code Playgroud)

下次进入MVC源代码时,您可以检查所有变量.

有关详细信息,请访问http://msdn.microsoft.com/en-us/library/9dd8z24x.aspx

  • 要将此技术应用于任何其他程序集,请通过附加VS调试器并打开:DEBUG> Windows> Modules来找到该文件夹​​. (2认同)

sco*_*obi 9

得到了约翰罗宾斯的答案.基本上,在你的环境变量中坚持COMPLUS_ZapDisable = 1(包裹在一个蝙蝠中以避免未经优化地运行整个系统)并禁用VS主机进程.

http://blogs.msdn.com/sburke/archive/2008/01/29/how-to-disable-optimizations-when-debugging-reference-source.aspx

另一个选项是新的.NET Reflector Pro,它允许您选择性地反编译/重新编译未经优化的程序集.没有必要使用参考源但是有良好的备份.

http://www.red-gate.com/products/reflector/features_pro.htm