【问题标题】:Generating debug symbols for Symbol Server from CI process to aid remote debugging从 CI 进程为 Symbol Server 生成调试符号以帮助远程调试
【发布时间】:2010-02-02 17:32:06
【问题描述】:

有人对扩展我们的 SVN 和巡航控制 CI process 以填充 Symbol Server 有任何建议吗?

我们正在尝试为我们的 ASP.NET 2.0 C# 网站远程调试测试环境,并且在始终加载正确的符号时遇到了问题。

我们的构建过程是在发布模式而不是调试模式下完成的,那么这对 PDB 文件的创建有何影响?

使用VS2008,由于测试环境不在同一个域中,我们解决了连接远程调试的几个问题。我们现在在尝试观察变量时收到此消息:

无法获取本地或参数 'xxxxx' 的值,因为它在该指令指针处不可用,可能是因为它已被优化掉

这是因为我们的构建和后续部署过程处于发布模式吗?

【问题讨论】:

    标签: c# asp.net visual-studio debugging continuous-integration


    【解决方案1】:

    出现此错误消息是因为 CLR 本身已经优化了变量。 PDB 仍然包含有关本地人在发布模式下的所有信息,调试器只是无法访问它们。

    虽然可以在发布模式下构建,但通常可以避免这个问题。 DebuggableAttribute 类是关于 CLR 是否会以不可见本地人的方式进行优化的因素之一。

    此属性通常由编译器发出,它会根据项目模式更改标志:发布或调试。如果该属性已经存在于您的项目中,编译器将不会覆盖它。

    如果您有 Web 应用程序(相对于网站),您只需将以下行添加到 AssemblyInfo.cs 即可解决问题

    [assembly: Debuggable(DebuggingModes.DisableOptimizations)]
    

    请注意,这确实会禁用性能优化,因此您可能不想真正以这种方式发布,但它有助于调试。

    【讨论】:

    • 谢谢,正是我需要的指针,实际上已经调整了我们的 CI 流程,以禁用对所有程序集的优化,并使用正确的 msbuild.exe 开关。
    猜你喜欢
    • 2011-06-12
    • 2016-01-29
    • 2011-03-06
    • 2021-05-11
    • 2011-03-31
    • 2012-05-19
    • 2011-10-19
    • 2011-11-29
    • 1970-01-01
    相关资源
    最近更新 更多