Почему Stack Trace показывает мой путь к файлам разработки?

Visual Studio 2010 с пакетом обновления 1 (SP1), скомпилированное приложение WCF, помещено на сервер и, конечно, оно получило ошибку при первом запуске (что нового), выводя трассировку стека в файл журнала.

Он видит путь к моей среде разработки. Зачем? Это потому, что я развернул его как Debug по сравнению с Release или есть что-то еще, или я буду более осторожным в том, чтобы выводить трассировку стека независимо?

04/09/2012 03:58:46: Error: Object reference not set to an instance of an object.    at App1.Logging.LogMessageToFile(String msg, Boolean isUsingClickOnceApp) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\Logging.cs:line 63
   at App1.App1Main.ConnectWebService(String description) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\International.cs:line 40
04/09/2012 03:58:46: Error: Object reference not set to an instance of an object.    at App1.App1Main.UpdateActivityLog(String data, String userName, Boolean deleteData, Int64 firstId, Int64 lastId, String changeType) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\App1Main.cs:line 641

Спасибо, Роб

Ответы

Ответ 1

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

Предполагается развернуть сборку Release вашего кода. Это позволяет оптимизировать, чтобы ваш код работал намного быстрее. Вы все еще можете скопировать файлы .pdb для этой сборки, они обычно имеют эту информацию об отладке. Project + Properties, перейдите к настройке Release build, Build, Advanced, "Debug Info". Обычная настройка здесь для релизов - это "pdb-only" вместо "full". Это означает, что исходный файл и номер строки не включены. Что имеет смысл, следы стека, как правило, немного ненадежны после того, как дрожание оптимизировало код.

Ответ 2

Как правило, исходный путь к исходному файлу хранится в файлах PDB (program database) при развертывании в режиме отладки.