Как изменить расположение исходных файлов в файле символов (pdb)

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

  •  09-06-2019
  •  | 
  •  

Вопрос

В основном то, что я хочу сделать, это:файл pdb содержит расположение исходных файлов (например, C:\dev\proj1\helloworld.cs).Можно ли изменить этот файл PDB, чтобы он содержал другое местоположение (например, \more\differenter\location\proj1\helloworld.cs)?

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

Решение

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

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

Если вам нужны более общие сведения о путях, встроенных в файл pdb, вы можете сначала использовать MS-DOS. subst Команда для сопоставления определенной папки с буквой диска.

subst N: <MyRealPath>

Затем откройте свой проект относительно N:ездить и восстанавливать его.Ваши файлы PDB будут ссылаться на исходные файлы на N:.Теперь не имеет значения, где вы разместите этот конкретный набор исходных файлов, если вы впоследствии назовете корневой каталог «N:», как вы это делали при его создании.

Эту практику рекомендует Джон Роббинс в своей превосходной книге: Отладка приложений для Microsoft .NET и Microsoft Windows.

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

После поиска и неспособности найти что-то работающее, я обнаружил, что если вы поместите исполняемый файл и PDB рядом с файлом аварийного дампа (т.в том же каталоге), затем откройте и запустите аварийный дамп в VS, VS найдет и будет использовать PDB/EXE локально.Кроме того, он также запросит местоположение исходного кода при нажатии на запись в стеке вызовов:указывая на соответствующий исходный код, все работает нормально, и это здорово!

В любом случае, надеюсь, это поможет кому-то еще...:)

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

В Windbg (например):

.srcpath+ путь_к_источнику_корня
или это (если вы выполняете удаленную отладку):
.lsrcpath+ путь_к_источнику_корня

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top