.NET: Запуск программы с отладочной информацией - PullRequest
5 голосов
/ 14 апреля 2011

Известно, что компиляция программы в «режиме отладки» (а не в «режиме выпуска») может привести к снижению производительности.

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

Я обнаружил, что это возможно, скомпилировав код в «режиме выпуска» иразмещение файла * .pdb вместе с двоичными файлами в одной и той же папке.

Кто-нибудь знает, приводит ли присоединение файла pdb к любой проблеме с производительностью.

Спасибо

Ответы [ 3 ]

2 голосов
/ 14 апреля 2011

Это не должно вызывать проблем с производительностью, так как DLL была скомпилирована в режиме Release. Когда генерируется исключение, виртуальная машина .NET знает все о трассировке стека, в том числе о том, какая инструкция выполнялась в каждом методе стека, когда генерировалось исключение. Включение файла pdb просто дает ему возможность сопоставить эти данные с реальными именами файлов и номерами строк.

Любая разница в производительности, вызванная включением этих дополнительных данных в трассировку стека, вероятно, будет уменьшена из-за издержек, связанных с выдачей исключения.

1 голос
/ 14 апреля 2011
  • Компиляция в режим выпуска + генерация .pdb не влияет на производительность
  • Помещение файлов .pdb вместе с dll для поиска отладочной информации имеет очень маленький крошечный удар по производительности только во время исключений - это незначительно . Это может быть связано с поиском информации о стеке из отображения pdb.
0 голосов
/ 14 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...