C#例外不给行号

Jac*_*ada 35 c#

我正在使用来自Java背景的C# - 我有一个例外,但它没有告诉我行号 - 只是方法名称.

这是常见的吗?是调试/发布版本?

Ric*_*lay 41

只要将pdb文件保存在应用程序目录中,就可以在Debug中编译时使用行号.

根据Justin的回答,如果启用PDB创建,这也适用于Release .

如果您有兴趣,可以在PDB文件(MSDN)上找到更多信息


Jus*_*tin 21

这是调试符号不可用 - 在构建项目时确保在调试设置中设置了"完整"(Project properties- > Build- > Advanced- > Debug info),并确保生成的pdb文件与assmebly一起存在在运行应用程序时在同一目录中.


Pao*_*sco 14

该类的StackTrace属性Exception包含行号,至少在调试信息(pdb文件)可用时:

using System;
class Program {
    public static void Main() {
        try {
            throw new Exception("test");
        } catch (Exception e) {
            Console.WriteLine(e.StackTrace);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将使用pdb文件提供以下输出:

at Program.Main() in X:\code\test\test\Program.cs:line 6
Run Code Online (Sandbox Code Playgroud)

这没有:

at Program.Main()
Run Code Online (Sandbox Code Playgroud)