【问题标题】:Exception stack trace does not have line numbers异常堆栈跟踪没有行号
【发布时间】:2018-12-03 17:31:24
【问题描述】:

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

【问题讨论】:

  • 您是处于发布模式还是调试模式?
  • 2.1 没有复制。您使用的是哪个版本的 .NET Core?提醒一下,长期支持的版本是2.1。
  • 即使使用dotnet run -c Release也没有复制。
  • @HimBromBeere 我都试过了,在发布模式下我设置了“pdb only”但结果相同。 NetCore 版本:2.0,带控制台应用
  • @jidic 你试过什么?您使用的是哪个版本的 .NET Core?我无法在调试或发布模式下重现您所描述的内容。没有使用 Visual Studio 创建的项目或使用 dotnet new console 创建的项目进行复制。

标签: c# .net .net-core


【解决方案1】:
  • 进入要查看堆栈跟踪行号的项目的“属性”窗口。

  • 点击Build“垂直标签”。

  • 选择“发布”配置。

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

通过以下评论实现:

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

欲了解更多信息,请查看以下链接:

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

【讨论】:

  • 不幸的是我已经这样做了,我正在尝试在我的 ubuntu 服务器上更新到最新的 2.1 版本,看看这个版本是否没有这个问题
  • @jidic 你忘了说你用的是什么操作系统。这很重要很多。正如我所说,我无法在 Windows 上重现您所写的内容。如果 runtime 不支持,您可能无法通过更改项目属性来解决此问题。
猜你喜欢
  • 1970-01-01
  • 2011-01-05
  • 2012-07-11
  • 1970-01-01
  • 2011-08-10
  • 2017-08-06
  • 2010-09-13
  • 2011-10-21
相关资源
最近更新 更多