dnspy调试时 禁止目标程序优化的问题
dnspy 给出了两种禁止目标程序优化的方案:https://github.com/dnSpy/dnSpy/wiki/Making-an-Image-Easier-to-Debug
第一种是设置环境变量 COMPlus_ZapDisable=1,COMPlus_ReadyToRun=0。查了一下COMPlus_ZapDisable 用于禁止使用优化版的 NGEN 托管映像( *.ni.dll) ,COMPlus_ReadyToRun 用于禁止使用提前编译的二进制代码。
相关链接如下:
https://stackoverflow.com/questions/35486740/what-is-complus-zapdisable-and-why-is-it-not-set-by-default
https://docs.microsoft.com/en-us/visualstudio/debugger/jit-optimization-and-debugging?view=vs-2019#limitations-of-the-suppress-jit-optimization-option
但是我使用了这种方式后,确实目标程序(以sharepoint为例)不再使用 .ni.dll 的优化映像了,但是仍然存在大量无法查看的变量,甚至部分位置无法下断点的情况,你们有没有出现过这种情况,想问一下原因是什么?
第二种是在目标托管映像的同位置创建一个同名 .ini 文件,其内容如下:
[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0
使用这种方式后效果非常号,所有变量都可查看,所有位置都可以下断点,但是这种配置方式实在是麻烦。
所以想问一下大家,这两种方式到底区别在哪里,是不是我第一种配置哪里出了问题?
页:
[1]