gpt4 book ai didi

c# - 如何在 .NET 中抛出的异常的 StackTrace 中获取行号以显示

转载 作者:IT王子 更新时间:2023-10-29 04:09:27 34 4
gpt4 key购买 nike

MSDN 关于 Exception 类的 StackTrace 属性是这样说的:

The StackTrace property holds a stack trace, which you can use to determine where in the code the error occurred. StackTrace lists all the called methods that preceded the exception and the line numbers in the source where the calls were made.

所以我知道此信息可用。如何让行号实际显示在堆栈跟踪中?我的代码在一段非常困难和复杂的代码中抛出异常,该代码会遍历大量对象,因此我不想遍历无数次以查看异常发生的位置。异常的堆栈跟踪仅显示方法签名,没有行号。

最佳答案

要获取 StackTrace 中的行号,您需要有正确的调试信息(PDB 文件)以及您的 dll/exe。要生成调试信息,请在 Project Properties -> Build -> Advanced -> Debug Info 中设置选项:

alt text

将其设置为 full 应该就足够了(请参阅 Advanced Build Settings Dialog Box docs 了解其他选项的作用)。默认情况下,调试信息(即 PDB 文件)是为调试构建配置生成的,但也可以为发布构建配置生成。

为发布版本生成 PDB 使您能够在没有 PDB 的情况下交付代码,但如果您需要行号(或者甚至附加远程调试器),则可以将 PDB 放在 dll 旁边。需要注意的一件事是,在发布版本中,由于编译器或 JIT 编译器所做的优化,行号可能不完全正确(如果行号显示为 0,则尤其如此)。

关于c# - 如何在 .NET 中抛出的异常的 StackTrace 中获取行号以显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791696/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com