Отображение количества строк в Stack Trace для сборки .NET в режиме выпуска

StackOverflow https://stackoverflow.com/questions/628565

Вопрос

Есть ли способ отобразить строки в трассировке стека для сборки/развертывания сборки .NET в режиме выпуска?

ОБНОВЛЯТЬ:

Мое приложение разделено на три проекта библиотеки классов и один проект «веб-сайта» ASP.NET.Ошибка, которую я пытаюсь отследить, находится в одном из трех проектов библиотеки классов.Я развернул файл pdb только для проекта библиотеки классов, который генерирует ошибку «Ссылка на объект не установлена ​​на экземпляр объекта».

Номера строк по-прежнему не отображаются в трассировке стека.Нужно ли мне развертывать файлы PDB для всех проектов, чтобы получить номера строк в трассировке стека?

Рабочее решение

Развертывание файла pdb для каждого приложения устранило проблему с номером строки.

Это было полезно?

Решение

  • Перейдите в окно «Свойства» проекта, в котором вы хотите увидеть номера строк трассировки стека.
  • Нажмите на вкладку «Вертикальная постройка».
  • Выберите конфигурацию «Выпустить». Проверьте постоянный параметр DEBUG.
  • Снимите флажок с параметра «Оптимизировать код», чтобы избежать случайных проблем с трассировкой встроенного кода (этот шаг не является обязательным).
  • Нажмите кнопку Дополнительно...и выберите «Вывод» -> «Отладочная информация» -> «pdb-only».
  • Разверните созданный PDB-файл вместе со сборкой.

Реализовано с помощью комментария ниже:

  • Еще одна вещь, которую следует проверить: в разделе «Пакет/Публикация в Интернете» флажок «Исключить сгенерированные символы отладки» также снят.

Другие советы

В VS2012 необходимо снять флажок " Исключить сгенерированные символы отладки " в разделе Свойства пакета / публикации в Интернете.

Мое решение

Скопируйте файл pdb в ту же папку, что и исполняемый файл.

Теперь я могу просмотреть номер строки при запуске exe-файла.

это причина

http://msdn.microsoft. ком / EN-US / библиотека / ee416588% 28В = vs.85% 29.aspx

В прошлом я сталкивался с проблемами, когда чувствовал необходимость развернуть файлы PDB с помощью сборки выпуска, чтобы отследить ошибку. Причина, как вы сказали, заключается в том, что исключение произошло в методе, который был очень большим, и я не мог точно определить, где это происходит.

Это может указывать на то, что метод необходимо реорганизовать в более мелкие, более детализированные методы. Не один размер подходит для всех ответов, но этот подход хорошо послужил мне в краткосрочной перспективе (я часто обнаруживал ошибку во время рефакторинга) и в долгосрочной перспективе.

Просто мысль.

Включите символы отладки в ваш пакет сборки / развертывания.

В VS 2008 Express я нашел его в разделе «Свойства проекта» - > Компилировать - > Дополнительные параметры компиляции.

Это работает каждый раз. Вам просто нужно подстроковать сообщение трассировки стека. Очень легко! Кроме того, в vb.net вам необходимо выполнить команду «Показать все файлы». и включите PDB.

'Err is the exception passed to this function

Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5)
Dim i As Integer = 0
While i < lineGrab.Length                   
    If (IsNumeric(lineGrab(i))) Then
        lineNo.Append(lineGrab(i))
    End If
    i += 1
End While

'LineNo holds the number as a string

Версия C #:

string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5);

int i = 0;
int value;
while (i < lineGrab.Length)
{
    if (int.TryParse(lineGrab[i].ToString(), out value))
    {
        strLineNo.Append(lineGrab[i]);
    }
    i++;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top