Как изменить расположение исходных файлов в файле символов (pdb) - PullRequest
20 голосов
/ 26 августа 2008

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

Ответы [ 4 ]

11 голосов
/ 26 августа 2008

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

7 голосов
/ 26 августа 2008

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

subst N: <MyRealPath>

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

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

3 голосов
/ 10 февраля 2011

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

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

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

1 голос
/ 06 октября 2008

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

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

.srcpath + path_to_source_root
или это (если вы отлаживаете удаленно):
.lsrcpath + path_to_source_root
...