Нет номеров строк, несмотря на создание PDBC#

Место общения программистов C#
Anonymous
Нет номеров строк, несмотря на создание PDB

Сообщение Anonymous »

У меня есть проект C#, который не отображает номера строк в исключениях, несмотря на то, что файлы PDB создаются и присутствуют вместе с exe.
Я работаю в Linux, используя dotnet инструмент для сборки и запуска. Я ориентируюсь на net48, потому что библиотека, которую я создаю, предназначена для использования в Unity, поэтому я не могу ориентироваться на более поздние версии C#. Я пробовал установить DebugType как на полный, так и на встроенный.
Я могу воспроизвести проблему с помощью минимального решения:

Код: Выделить всё

LineNumbers.sln

Код: Выделить всё

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LineNumbers", "LineNumbers\LineNumbers.csproj", "{EB46C6B5-C01C-4086-8FDC-1B5131F54683}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EB46C6B5-C01C-4086-8FDC-1B5131F54683}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB46C6B5-C01C-4086-8FDC-1B5131F54683}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB46C6B5-C01C-4086-8FDC-1B5131F54683}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB46C6B5-C01C-4086-8FDC-1B5131F54683}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

Код: Выделить всё

LineNumbers/LineNumbers.csproj

Код: Выделить всё



Exe
net48
enable
8.0
true
full



Код: Выделить всё

LineNumbers/Program.cs

Код: Выделить всё

using System;

namespace Example {
public static class Program {
public static void Main(string[] args) {
throw new Exception("Line numbers?");
}
}
}
Запуск с помощью dotnet run создает трассировку стека без номеров строк и имен файлов:

Код: Выделить всё

$ dotnet run --project LineNumbers

Unhandled Exception:
System.Exception: Line numbers?
at Example.Program.Main (System.String[] args) [0x00001] in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Exception: Line numbers?
at Example.Program.Main (System.String[] args) [0x00001] in :
Я также получаю тот же результат, если явно запускаю сгенерированный двоичный файл с помощью mono:

Код: Выделить всё

$ mono LineNumbers/bin/Debug/net48/LineNumbers.exe

Unhandled Exception:
System.Exception: Line numbers?
at Example.Program.Main (System.String[] args) [0x00001] in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Exception: Line numbers?
at Example.Program.Main (System.String[] args) [0x00001] in :0
При проверке выходной папки создается PDB:

Код: Выделить всё

$ ls LineNumbers/bin/Debug/net48/
LineNumbers.exe  LineNumbers.exe.config  LineNumbers.pdb
Дополнительная информация о версии системы:

Код: Выделить всё

$ dotnet --version
8.0.104
$ mono --version
Mono JIT compiler version 6.12.0.199 (tarball Wed May  1 05:08:53 UTC 2024)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS:           __thread
SIGSEGV:       altstack
Notifications: epoll
Architecture:  amd64
Disabled:      none
Misc:          softdebug
Interpreter:   yes
LLVM:          supported, not enabled.
Suspend:       hybrid
GC:            sgen (concurrent by default)
$ uname -r
6.8.11-300.fc40.x86_64
$ rpm -E %fedora
40
Как сделать так, чтобы номера строк отображались в исключениях?


Подробнее здесь: https://stackoverflow.com/questions/787 ... -generated

Вернуться в «C#»