В основном, что я хочу сделать это: файл pdb содержит местоположение исходных файлов (например, C:\dev\proj1\helloworld.cs
). Возможно ли изменить этот файл pdb, чтобы он содержал другое местоположение (например, \more\differenter\location\proj1\helloworld.cs
)?Как изменить расположение исходных файлов в файле символов (pdb)
ответ
Вы можете использовать функцию индексирования источника средств отладки для Windows, которая будет сохранять ссылки на соответствующие изменения файлов в исходном репозитории в виде альтернативного потока в файле PDB.
Если вы ищете более общие сведения о путях, встроенных в файл pdb, вы можете сначала использовать команду MS-DOS subst
для сопоставления конкретной папки с буквой диска.
subst N: <MyRealPath>
Затем откройте проект относительно накопителя N и перестройте его. Ваши файлы PDB будут ссылаться на исходные файлы на N :. Теперь не имеет значения, где вы размещаете этот определенный набор исходных файлов, до тех пор, как вы впоследствии вызываете корневой каталог «N:», как вы это делали при его создании.
Эта практика рекомендована Джоном Роббинсом в его прекрасной книге, Debugging Applications for Microsoft .NET and Microsoft Windows.
Это, безусловно, возможно, так как на Фройнде уже указано. Но если это так, что источники могут быть расположены и загружены во время отладки, лучшим способом было бы установить исходный путь соответственно. После установки в отладчике он будет преследовать все жестко закодированные пути внутри PDB.
В WinDbg (например):
.srcpath + path_to_source_rootили это (в случае, если вы отладки удаленно):
.lsrcpath + path_to_source_root
Я хотел найти ответ на это, чтобы отладить дамп сбоя, который произошел в исполняемом файле, который я не создавал на своей машине, поэтому путь к исходному коду, на который ссылается в PDB, был недействительным, как и путь к PDB, указанный в исполняемом файле.
После поиска и поиска чего-то, что работает, я обнаружил, что если вы поместите исполняемый файл и PDB вместе с файлом дампа сбоя (то есть в том же каталоге), тогда откройте и запустите дамп сбоя в VS, VS найдет и используйте PDB/EXE локально. Кроме того, он также будет запрашивать расположение исходного кода при нажатии на запись в стеке вызовов: указывая на то, какой исходный код имеет значение, все работает отлично, и это здорово!
Во всяком случае, надеюсь, что это помогает кто-то еще ... :)
http://msdn.microsoft.com/en-us/library/ms680641.aspx –
Имея PDB индексируются прямо из системы управления является ЗОЛОТО! Я желаю, чтобы все проекты с открытым исходным кодом начали делать это. – Trumpi
Это мята. Я не знал об этой возможности! Эта статья также полезна: http://entland.homelinux.com/blog/2006/07/06/setting-up-a-symbol-server/ – Pete