有没有人对扩展我们的SVN&巡航控制CI process填充Symbol Server?
我们正在尝试远程调试ASP.NET 2.0 C#网站的测试环境,并且在遇到始终加载正确符号的问题时遇到了问题。
我们的构建过程是在发布模式而非调试模式下完成的,那么这对PDB文件的创建有何影响?
使用VS2008,我们解决了连接到远程调试的几个问题,因为测试环境不在同一个域中。我们现在在尝试观察变量时收到此消息:
无法获取本地或参数'xxxxx'的值,因为它在此指令指针处不可用,可能是因为它已被优化掉
这是因为我们的构建和后续部署过程处于发布模式吗?
答案 0 :(得分:2)
出现此错误消息是因为CLR本身已优化了变量。 PDB仍然包含有关发布模式下本地人的所有信息,调试器只是无法访问它们。
虽然可以在发布模式下构建并且通常可以避免此问题。关于CLR是否会以局部不可见的方式进行优化的因素之一是DebuggableAttribute
类。
此属性通常由编译器发出,它根据项目模式更改标志:Release或Debug。如果项目中已存在该属性,则编译器不会覆盖它。
如果您有一个Web应用程序(与网站相比),您只需将以下行添加到AssemblyInfo.cs中即可解决问题
[assembly: Debuggable(DebuggingModes.DisableOptimizations)]
请注意,这会禁用性能优化,因此您可能不希望以这种方式实际释放,但它对调试很有帮助。