Я использую С#, исходящий из фона Java - у меня есть исключение, но он не говорит мне номер строки. Просто имя метода.
Это обычное??? Не доходит ли до сборки Debug/Release?
Ответ 1
Номера строк должны быть доступны при компиляции в Debug до тех пор, пока вы сохраняете файлы pdb в каталоге приложения.
Это также будет работать в Release, если вы включите создание PDB, согласно Justin answer.
Если вам интересно, более подробную информацию можно найти на Файлы PDB (MSDN)
Ответ 2
Это означает, что символы отладки недоступны - когда вы создаете свой проект, убедитесь, что у вас есть "полный", установленный в настройках отладки (Project properties → Build → Advanced → Debug 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 для определения номеров строк исходного кода.