在ASP.NET 2.0网站上,我记录了未处理的异常的详细信息。我想记录源文件名和行号,但是当发生异常时,我不会在堆栈跟踪中找到它。原因是我在web.config编译设置(它是一个生产站点)中有debug =“false”,因此服务器上没有生成PDB文件。有没有办法让ASP.NET在发布模式下生成调试符号文件?我不想预编译该网站。在发布模式下调试符号
回答
好的,我找到了答案。您可以设置debug =“false”来获得优化,然后在system.codedom编译器设置中设置compilerOptions =“/ debug:pdbonly”以获取符号。这里是相关的web.config摘录:
<system.web>
....
<compilation debug="false" defaultLanguage="c#">
...
</compilation>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
compilerOptions="/debug:pdbonly">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
...
</compilers>
</system.codedom>
只是FYI,为我的ASP.NET 4.0网站项目,通过编译CompilerInfo数组后(使用CompilerInfo [] allCompilerInfo = CodeDomProvider.GetAllCompilerInfo();)来获取它),版本设置是“版本= 4.0.0.0”和< providerOption name =“CompilerVersion”value =“v4.0”/>。其他一切都是一样的。故事的道德是你的里程可能会有所不同,检查你的项目的实际设置。 – 2013-04-16 23:48:37
除非我错过了一些调试&发布版本之间的区别在优化。您应该能够使用pdb创建一个正常的调试二进制文件,并确保在项目设置中启用所有优化设置。 Afaik,除非有一个例外,pdb文件将被加载,等等......
这是一个ASP.NET 2.0网站 - 我没有构建二进制文件。所有编译都由ASP.NET实时完成,并由web.config设置进行控制。看来我可以有debug =“false”(优化但没有符号)或debug =“true”(符号但没有优化)。 – noj 2009-11-12 08:51:14
- 1. 在发布模式下调试
- 2. 布尔值在调试模式下比在发布模式下有所不同
- 3. 发布在发布模式下,出版与调试配置
- 4. 在发布模式/调试模式下双精度的差异
- 5. 在调试模式和发布模式下部署
- 6. ios对象在调试模式下发布但未在发布模式下发布
- 7. 调试模式或发布模式
- 8. 在调试模式下访问冲突,但在发布模式下很好
- 9. GCC在调试模式下崩溃,在发布模式下运行良好?
- 10. 项目在调试模式下失败,但在发布模式下工作
- 11. ObjectContext在调试模式下公开,在发布模式下内部
- 12. flex bitmapdata在发布时为空,但不在调试模式下
- 13. 强制CMake在发布模式下用符号构建
- 14. 如何在发布模式下使用符号构建OpenSSL?
- 15. 无需从调试模式切换到发布模式即可迅速在发布模式下创建项目
- 16. 在“调试信息发布”模式下构建Qt?
- 17. 为什么在发布模式下调试隐藏信息?
- 18. QMAKE * .pro-file:在发布模式下启用调试信息
- 19. 在调试模式下停止发布网站
- 20. 在发布模式下调试Visual Studio Web应用程序
- 21. 如何在发布模式下进行调试?
- 22. 在发布模式下调试的缺点
- 23. 在发布模式下进行调试或更改_iterator_debug_level?
- 24. Visual Studio在发布模式下创建调试文件
- 25. 在发布模式下调试一个外壳扩展
- 26. 在调试模式下内置VS2008程序崩溃,但不在发布模式
- 27. 在调试或发布模式标志下运行而不运行时调试
- 28. 发布在调试模式,但编译器删除#if调试
- 29. 在发布模式与调试模式下代码的行为有所不同
- 30. 在调试模式和发布模式下比较时间(Visual Studio 2008)
我不是100%确定,但我怀疑这是可能的。 – 2009-11-12 00:46:37