You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core 2.1应用中获取异常的完整堆栈跟踪

如何在.NET Core 2.1中获取包含行号的完整异常堆栈跟踪

我完全懂你的困扰——VS文本可视化工具里能看到带行号和文件路径的完整堆栈信息,但把它存入变量后却丢失了这些关键细节,这主要是调试符号文件配置和异常信息获取方式的问题,下面给你一步步解决:

1. 确保项目生成调试符号文件(.pdb)

行号、文件路径这类调试信息是存储在.pdb文件里的,不管你是Debug还是Release模式,都需要让项目生成这个文件:

  • 右键你的项目 → 属性 → 「生成」选项卡 → 点击右下角的「高级」按钮
  • 在弹出的窗口中,把「调试信息」设置为「完整」或者「pdb-only」
  • 保存配置后重新编译项目

2. 使用Exception.ToString()获取完整异常信息

别直接用Exception.StackTrace属性,它只返回调用栈的基础内容;而ToString()方法会返回全量异常详情——包括异常类型、错误消息、完整堆栈(含行号和文件路径),只要.pdb文件存在就能正确解析出这些信息。

示例代码:

try
{
    // 你的业务代码,比如触发格式异常的Int32.Parse("非数字字符串")
}
catch (Exception ex)
{
    // 这里的fullExceptionDetails会包含VS可视化工具里的所有细节
    string fullExceptionDetails = ex.ToString();
    // 后续将这个变量存入日志或其他存储介质
}

3. 发布时确保符号文件被部署

如果你的应用是发布到服务器运行,一定要把.pdb文件和程序集一起部署:

  • 在发布配置的「文件发布选项」里,勾选「包含调试符号」
  • 或者手动将生成的.pdb文件复制到发布目录中

为什么VS可视化工具能看到完整信息?

VS在调试时会自动加载本地生成的.pdb文件,所以能解析出行号和文件路径;而你之前只取StackTrace属性,再加上如果项目没生成.pdb或者发布时没带上,自然就丢失了这些关键信息。

按上面的方法调整后,你存入变量的异常信息就会和VS可视化工具里的内容完全一致啦!

内容的提问来源于stack exchange,提问作者Mehaboob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 01:17:42