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

如何获取包含文件路径和代码行号的当前方法调用跟踪?

获取带文件路径和行号的.NET调用栈信息

你现在的代码能输出基础调用栈,但缺少文件路径和行号,核心原因是默认的StackTrace构造函数不会主动捕获这些调试相关信息,只需调整两个关键点就能实现需求:

1. 确保调试符号(PDB文件)可用

首先要保证项目生成了PDB文件:

  • Debug模式下,Visual Studio默认会自动生成PDB,和程序集放在同一目录
  • Release模式下,需要手动开启:右键项目 → 属性 → 生成 → 高级 → 调试信息,选择「完整」或「pdb-only」

2. 修改StackTrace的初始化代码

把原来的无参构造改成带参数的重载,显式指定需要捕获文件信息:

static void Main() { A(); } 
static void A() { B(); } 
static void B() { C(); } 
static void C() { 
    // 设置fNeedFileInfo为true,开启文件路径和行号的捕获
    System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace(true); 
    Console.WriteLine(t); 
}

修改后的输出效果

运行后就能得到你想要的带行号的调用栈:

at test.MyClass.C() in D:\Projects\TestApp\Program.cs:line 26
at test.MyClass.B() in D:\Projects\TestApp\Program.cs:line 22
at test.MyClass.A() in D:\Projects\TestApp\Program.cs:line 18
at test.MyClass.Main() in D:\Projects\TestApp\Program.cs:line 12

额外注意事项

  • 发布应用时,要把PDB文件和程序集一起部署,否则还是无法获取行号信息
  • .NET Core/.NET 5+项目的设置逻辑和.NET Framework一致,同样需要确保PDB生成并随程序发布

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:46