В основном, что я хочу сделать это: файл pdb содержит расположение исходных файлов (например, C:\dev\proj1\helloworld.cs
). Возможно ли изменить этот файл pdb, чтобы он содержал другое местоположение (например, \more\differenter\location\proj1\helloworld.cs
)?
Как изменить расположение исходных файлов в файле символов (pdb)
Ответ 1
Вы можете использовать функцию индексации источника для инструментов отладки для Windows, которая сохранит ссылки на соответствующие изменения файлов в исходном репозитории в виде альтернативного потока в файле PDB.
Ответ 2
Если вы ищете более общие сведения о путях, встроенных в файл pdb, вы можете сначала использовать команду MS-DOS subst
для сопоставления конкретной папки с буквой диска.
subst N: <MyRealPath>
Затем откройте свой проект относительно диска N: и перестройте его. Ваши файлы PDB будут ссылаться на исходные файлы на N:. Теперь неважно, где вы размещаете этот определенный набор исходных файлов, если вы впоследствии вызываете корневой каталог "N:", как вы это делали, когда вы его создали.
Эта практика рекомендуется Джоном Роббинсом в его прекрасной книге Отладка приложений для Microsoft.NET и Microsoft Windows.
Ответ 3
Я хотел найти ответ на этот вопрос, чтобы отладить дамп сбоя, который произошел в исполняемом файле, который я не создавал на своей машине, поэтому путь к исходному коду, на который ссылается в PDB, был недействительным, как и путь к PDB, указанному в исполняемом файле.
После поиска и поиска чего-то, что работает, я обнаружил, что если вы поместите исполняемый файл и PDB вместе с файлом дампа сбоя (то есть в том же каталоге), тогда откройте и запустите дамп сбоя в VS, VS найдет и используйте PDB/EXE локально. Кроме того, он также будет запрашивать расположение исходного кода при нажатии на запись в стеке вызовов: указывая на то, какой исходный код имеет значение, все работает отлично, и это здорово!
В любом случае, надеюсь, это поможет кому-то еще...:)
Ответ 4
Это, безусловно, возможно, как уже указывал Фроннд. Но если это так, что источники могут быть расположены и загружены во время отладки, лучшим способом было бы установить исходный путь соответственно. После установки в отладчике он будет предусматривать все жестко закодированные пути внутри PDB.
В windbg (например):
.srcpath + path_to_source_rootили это (в случае, если вы отлаживаете удаленно):
.lsrcpath + path_to_source_root