异常堆栈跟踪没有行号

jid*_*dic 5 .net c# .net-core

我发现了一个奇怪的问题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());
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

稍后我使用运行应用程序 dotnet run

上面的代码将打印:

System.InvalidOperationException: some error
at bar2.Program.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)

请注意,如果在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
Run Code Online (Sandbox Code Playgroud)

我还尝试设置了“仅pdb”的调试和发布模式。

小智 4

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

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

  • 选择“发布”配置。

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

通过以下评论实现:

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

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

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

  • @jidic你忘了说你使用的是什么操作系统。这*非常重要*。正如我所说,我无法在 *Windows* 上重现您所写的内容。如果*运行时*不支持它们,您可能无法通过更改项目属性来解决此问题。 (2认同)