Подтвердить что ты не робот

Исключения С#, не дающие номера строк

Я использую С#, исходящий из фона Java - у меня есть исключение, но он не говорит мне номер строки. Просто имя метода.

Это обычное??? Не доходит ли до сборки Debug/Release?

4b9b3361

Ответ 1

Номера строк должны быть доступны при компиляции в Debug до тех пор, пока вы сохраняете файлы pdb в каталоге приложения.

Это также будет работать в Release, если вы включите создание PDB, согласно Justin answer.

Если вам интересно, более подробную информацию можно найти на Файлы PDB (MSDN)

Ответ 2

Это означает, что символы отладки недоступны - когда вы создаете свой проект, убедитесь, что у вас есть "полный", установленный в настройках отладки (Project propertiesBuildAdvancedDebug info), а также убедитесь, что результирующие файлы pdb присутствуют вместе с assmebly в том же каталоге, когда вы запускаете свое приложение.

Ответ 3

Свойство StackTrace класса Exception содержит номера строк, по крайней мере, если доступна информация об отладке (файл pdb):

using System;
class Program {
    public static void Main() {
        try {
            throw new Exception("test");
        } catch (Exception e) {
            Console.WriteLine(e.StackTrace);
        }
    }
}

даст следующий файл с файлом pdb:

at Program.Main() in X:\code\test\test\Program.cs:line 6

и это без:

at Program.Main()

Ответ 4

Убедитесь, что файлы PDB вашего приложения развернуты вместе с приложением. Файлы PDB являются файлами, которые используются CLR для определения номеров строк исходного кода.