异常堆栈跟踪没有行号

时间:2018-06-25 07:39:53

标签: c# .net .net-core

我在NetCore上发现了一个奇怪的问题,当您在服务器上运行该应用程序时,它不添加行号,而stacktrace没有行号。我使用console创建一个dotnet new console应用程序,并添加了以下代码:

using System;

namespace bar2
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                throw new InvalidOperationException("some error");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
}

后来我使用dotnet run

运行该应用

上面的代码将打印:

System.InvalidOperationException: some error
at bar2.Program.Main(String[] args)

请注意,如果在Linux上执行,则没有行号(文件夹中有pdb文件)。

我该如何解决?对于生产应用程序而言,真的很难复制该错误,因为每次我都不知道文件行号时,我只会看到错误...

NetCore信息     .NET命令行工具(2.1.200)

Product Information:
 Version:            2.1.200
 Commit SHA-1 hash:  2edba8d7f1

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  16.04
 OS Platform: Linux
 RID:         ubuntu.16.04-x64
 Base Path:   /usr/share/dotnet/sdk/2.1.200/

Host (useful for support):
  Version: 2.1.1
  Commit:  6985b9f684

.NET Core SDKs installed:
  2.1.200 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.1 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.1 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.7 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.1 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

我也尝试在调试和发布模式下设置“仅pdb”。

1 个答案:

答案 0 :(得分:1)

  • 进入要查看堆栈跟踪行号的项目的“属性”窗口。

  • 单击“构建”“垂直选项卡”。

  • 选择“发布”配置。

  • 取消选中“优化代码”参数以避免内联代码偶尔出现跟踪问题(此步骤不是必需的)。
  • 按“高级...”按钮,然后选择“输出”->“调试信息”->“仅pdb”。
  • 使用程序集部署生成的.pdb文件。

在下面添加评论:

  • 要检查的另一件事是“打包/发布网站”部分中的“排除生成的调试符号”复选框也未选中

有关更多信息,请参见下面的链接:

Display lines number in Stack Trace for .NET assembly in Release mode