我添加了对另一个项目(包含在bin
文件夹中)的 DLL 的引用,并将本地复制设置为true
. 当我单步执行代码时;调试器到处乱跳。我相信这是因为代码已经过优化。我有两个问题:
- 是不是因为代码优化了
- 如果 (1) 为真,那么为什么我可以首先单步执行代码,即没有反射器。
我的猜测是跳跃是由于 PDB(符号)与编译的 DLL 不同步,因此符号告诉 VS 转到与代码实际执行的实际不匹配的行号;由于内联函数,优化也可能发挥作用。
其他影响调试体验的因素是:
DebuggerNonUserCode
用属性显式标记的方法调试优化代码可能会“跳来跳去”,因为某些函数会内联。最能说明问题的是,局部变量通常会被优化掉,在尝试读取它们时会发出这样的信息。
但是,如果跳跃似乎没有什么意义,那么您更有可能使用错误的 PDB(映射到行号)或源(具有行号)。