当前位置:  开发笔记 > 编程语言 > 正文

生产应用程序的PDB文件和"优化代码"标志

如何解决《生产应用程序的PDB文件和"优化代码"标志》经验,为你挑选了2个好方法。

我应该何时在生产版本中包含PDB文件?我应该使用该Optimize code标志,这将如何影响我从异常中获得的信息?

如果有明显的性能优势,我会想要使用优化,但如果不是,我宁愿有准确的调试信息.通常为生产应用程序做什么?



1> Duncan Smart..:

如果要在堆栈跟踪中查看源文件名和行号,请​​使用pdb-only选项生成PDB.优化与PDB生成是分开的,即您可以优化生成PDB而不会影响性能.

来自C#语言参考

如果使用/ debug:full,请注意对JIT优化代码的速度和大小有一些影响,并且/ debug:full对代码质量的影响很小.我们建议/ debug:pdbonly或不使用PDB来生成发布代码.



2> RoadWarrior..:

要回答您的第一个问题,如果您的异常报告需要行号,则只需要在生产版本中包含PDB.

要回答第二个问题,使用PDB的"优化"标志意味着任何堆栈"崩溃"都将反映在堆栈跟踪中.我不确定报告的实际行号是否错误 - 这需要更多调查.

要回答你的第三个问题,你可以用一个相当巧妙的技巧来充分利用这两个世界.默认调试版本和默认版本构建之间的主要区别在于,在执行默认版本构建时,将打开优化并且不会发出调试符号.所以,分四步:

    更改发布配置以发出调试符号.这对您的应用程序的性能几乎没有影响,并且如果(当?)您需要调试应用程序的发布版本时非常有用.

    编译使用新的发布版本的配置,即调试符号,并优化.请注意,99%的代码优化是由JIT编译器完成的,而不是语言编译器.

    在应用程序的文件夹中创建一个名为xxxx.exe.ini(或dll或其他)的文本文件,其中xxxx是可执行文件的名称.此文本文件最初应如下所示:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=0
    AllowOptimize=1
    

    通过这些设置,您的应用可以全速运行.如果要通过启用调试跟踪并可能关闭(CIL)代码优化来调试应用程序,只需使用以下设置:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=1
    AllowOptimize=0 
    

编辑根据cateye的评论,这也适用于 ASP.NET等托管环境.


@Cristi,Scott博客文章的来源是Mark Pearce.那是我 :-)
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有