Как указать каталог исходного кода в VS при просмотре стека вызовов дампа памяти?
-
03-07-2019 - |
Вопрос
Я анализирую файл .dmp, который был создан, и у меня есть стек вызовов, который дает мне много информации. Но я бы хотел дважды щелкнуть по стеку вызовов, чтобы он привел меня к исходному коду. Р>
Я могу щелкнуть правой кнопкой мыши по стеку вызовов и выбрать настройки символов ... где я могу поместить местоположение в PDB. Но нет никакой опции для каталога исходного кода.
Решение
Каталог с исходным кодом, к сожалению, жестко запрограммирован в pdb, однако, если вы знаете требуемые папки, вы можете использовать концепцию символьных ссылок, переходов windows.
Я использую инструмент Магия соединительных ссылок
Другие советы
Прочтите эту статью о том, как настроить исходный сервер (aka SrcSrv) интеграция на вашем сайте.
Я потратил время, чтобы выполнить эти шаги для нашей базы кода, и теперь мы можем взять файл .dmp из любой сборки нашего программного обеспечения за последние 6 месяцев ... получить трассировку стека с символами ... и просмотреть точные строки исходного кода в отладчике. Поскольку шаги интегрированы в наши автоматизированные сборки, теперь очень мало накладных расходов.
Мне нужно было написать собственный индексатор для ClearCase, но у них есть уже существующие для Perforce, TFS и, возможно, других.
Стоит отметить, что поддержка .dmp в VS2005 немного шаткая ... в VS2008 она немного более стабильна.
Вам также потребуется настроить Visual Studio для получения символов для продуктов MS отсюда в дополнение к вашему собственному серверу символов:
http://msdl.microsoft.com/download/symbols
Это описано в нескольких местах, таких как Инструменты отладки для Windows сайт.
Windbg позволяет вам устанавливать исходные пути так же, как пути PDB.
После загрузки PDB вручную перейдите к исходному файлу, который соответствует текущему месту выполнения. PDB содержит путь и имя файла исходных файлов, которые создали связанный с ним двоичный файл, и я подозреваю, что отладчик достаточно умен, чтобы подключиться, когда он замечает, что отображаемое имя файла и имя файла, связанного с текущим двоичным местоположением, совпадают. р>