Flyour 发表于 2021-1-25 10:37

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]
查看完整版本: dnspy调试时 禁止目标程序优化的问题