当前位置: 首页 > 编程语言 > C#

生产应用程序的PDB文件和“优化代码”标志共享

时间:2023-04-10 13:50:09 C#

生产应用程序的PDB文件和“优化代码”标志我什么时候应该在生产构建中包含PDB文件?我应该使用优化代码标志吗?这对我从异常中获得的信息有何影响?如果有明显的性能优势,我想使用优化,但如果没有,我宁愿有准确的调试信息。生产应用程序通常会做什么?如果要在堆栈跟踪中查看源文件名和行号,请??使用pdb-only选项生成PDB。优化与PDB生成是分开的,即您可以在不影响性能的情况下优化和生成PDB。来自C#语言参考如果使用/debug:full,请注意对JIT优化代码的速度和大小有一些影响,而/debug:full对代码质量的影响很小。我们建议/debug:pdbonly或不使用PDB来生成发布代码。要回答您的第一个问题,如果您的异常报告需要行号,您只需要在生产构建中包含PDB。要回答您的第二个问题,使用PDB的“优化”标志意味着任何堆栈“崩溃”都将反映在堆栈跟踪中。我不确定报告的实际行号是否错误-这需要更多调查。要回答你的第三个问题,你可以使用一个相当巧妙的技巧来获得两全其美。默认调试构建和默认发布构建之间的主要区别在于,在执行默认发布构建时,优化会打开并且不会发出调试符号。因此,分为四个步骤:更改发布配置以发出调试符号。这对应用程序的性能几乎没有影响,如果(什么时候?)您需要调试应用程序的发布版本,这将非常有用。使用新的发布构建配置进行编译,即使用调试符号和优化。请注意,99%的代码优化是由JIT编译器完成的,而不是语言编译器。在应用程序的文件夹中创建一个名为xxxx.exe.ini(或dll或其他)的文本文件,其中xxxx是可执行文件的名称。此文本文件最初应如下所示:[.NETFrameworkDebuggingControl]GenerateTrackingInfo=0AllowOptimize=1使用这些设置,您的应用程序将全速运行。如果您想通过打开调试跟踪并可能关闭(CIL)代码优化来调试您的应用程序,只需使用此设置:[.NETFrameworkDebuggingControl]GenerateTrackingInfo=1AllowOptimize=0EDIT根据cateye的评论,这也适用于ASP。NET和其他托管环境。没有必要将它们包含在您的发行版中,但您绝对应该构建并保留它们。否则几乎不可能调试故障转储。我也打开优化。虽然它确实使调试变得更加困难,但性能提升通常很显着,具体取决于应用程序的性质。对于某些算法,我们可以轻松地看到发布版本与调试版本相比性能提高了10倍以上。以上就是C#学习教程的全部内容:生产应用的PDB文件和“优化代码”标识。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: