首页 > 解决方案 > 异常堆栈跟踪没有行号

问题描述

我发现了一个奇怪的问题,NetCore即当您在服务器上运行应用程序时没有添加行号,堆栈跟踪没有行号。我使用创建一个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 Info .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”的调试和发布模式。

标签: c#.net.net-core

解决方案


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

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

  • 选择“发布”配置。

  • 取消选中“优化代码”参数以避免内联代码偶尔出现跟踪问题(此步骤不是必需的)。
  • 按 Advanced... 按钮并选择 Output -> Debug Info -> pdb-only。
  • 使用程序集部署生成的 .pdb 文件。

使用以下评论实现:

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

有关更多信息,请查看以下链接:

在发布模式下显示 .NET 程序集的堆栈跟踪中的行号


推荐阅读