Могу ли я использовать файлы pdb для пошаговой сборки сторонней сборки?

мой друг сделал действительно полезную библиотеку классов, которую я использую все время. Обычно я использую Reflector, чтобы посмотреть, что делает его код.

Что мне действительно хотелось сделать, так это пройтись по его коду во время отладки. Поэтому он дал мне свой файл .pdb.

  • Foo.dll (конфигурация выпуска, компиляция)
  • Foo.pdb

Теперь я не уверен, как я могу заставить его автоматически взломать его код, когда он выдает исключение (его код, в разных точках, исключения thorws .. например A first chance exception of type 'System.Web.HttpException' occurred in Foo.dll...

Я могу это сделать? Нужно ли мне что-то настраивать с настройками сервера символов в Visual Studio? Нужно ли мне компилировать dll в конфигурацию отладки и передавать файлы .dll и .pdb? Или (и я действительно боюсь этого) ... мне нужно иметь как .dll, .pdb, так и его исходный код ...

У меня также был посмотрите на этот предыдущий вопрос SO, но это вроде как не помогло (но доказательство того, что я пытался выполнить поиск, прежде чем задавать вопрос).

Может кто-то помочь мне, пожалуйста?


person Pure.Krome    schedule 29.04.2010    source источник


Ответы (3)


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

Я сделал это для некоторых проектов на работе, и это работает как шарм.

Дополнительные сведения о настройке сервера символов:

Исходный сервер помогает устранять ошибки

Настройка сервера символов

Использование symstore

person Frederik Gheysels    schedule 29.04.2010
comment
мне нужно настроить сервер символов, если эталонный проект не сторонний, а мой собственный проект, то есть у меня есть его исходный код, но я добавил dll в другой проект, откуда я хочу отлаживать - person Dakait; 11.03.2013
comment
Нет, если вы построили указанный проект на своем компьютере и если у вас есть файлы pdb. Просто скопируйте файлы pdb рядом с указанной dll, и все готово. - person Frederik Gheysels; 11.03.2013

Ответ находится в связанном вопросе, хотя, возможно, он не так очевиден, поэтому я скажу: да, вам нужен исходный код, чтобы пройти через исходный код. Файл PDB только сообщает отладчику, какая строка какого исходного файла соответствует конкретной машинной инструкции.

Вам не нужно настраивать «сервер символов» или что-то в этом роде. Просто попросите его прислать вам источник. Когда вы загружаете файл PDB, Visual Studio предложит указать расположение исходных файлов, если они не находятся по одному и тому же пути.

person EMP    schedule 29.04.2010
comment
Верно, но если этот парень регулярно вносит изменения в свой исходный код, то ему придется посылать этот исходный код каждый раз, когда он дает топикстартеру новую версию DLL. И если топикстартер использует разные версии этой DLL в разных проектах, то использование правильного источника для отладки может стать довольно сложной задачей... - person Frederik Gheysels; 29.04.2010
comment
Так какая польза от PDB, если мне все еще нужен исходный код? Я имею в виду, почему бы ему просто не дать мне исходный код, я скомпилирую его, а затем сошлюсь на него? я просто не понимаю :( (кстати, я не хочу его исходный код .. надеюсь, что он будет там в pdb) - person Pure.Krome; 29.04.2010
comment
Смысл PDB именно в том, что я сказал. Даже если вы скомпилируете исходный код самостоятельно, вам придется заставить компилятор генерировать файлы PDB - так работают отладчики. Более того, преимущество в вашем случае заключается в том, что ему не обязательно отправлять вам все исходные коды, которые вам понадобятся для компиляции сборки, а только исходные файлы, которые вы хотите пройти. - person EMP; 30.04.2010
comment
Итак, с сервером символов это на самом деле место, в котором хранится исходный код, который в файле PDB говорит «перейти к строке X» в файле A.cs? - person Pure.Krome; 30.04.2010

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

person Giorgi    schedule 29.04.2010