Чтение файла.pdb
У меня есть много файлов в формате.pdb, некоторые из них загружены, но до сих пор я не могу использовать или читать то, что находится внутри, поэтому я ищу, как прочитать и просмотреть формат файла.pdb из MS Windows XP.
Кто-нибудь из вас знает, как его открыть?
4 ответа
Если вы имеете в виду PDB, как в "программной базе данных", которую использует отладчик:
Файлы PDB содержат данные о файле, таком как EXE или DLL, который используется для отладки. Существуют открытые интерфейсы, которые позволяют извлекать данные из файла. Смотрите примеры здесь:
- http://blogs.msdn.com/jmstall/archive/2005/08/25/pdb2xml.aspx
- http://www.codeproject.com/KB/bugs/PdbParser.aspx
Если вы имеете в виду PDB, как в базе данных Palm Pilot, то я ничего не знаю об этом, но формат файла доступен здесь:
Microsoft выпустила исходный код своих форматов PDB, чтобы другие разработчики компиляторов, такие как команда LLVM, могли проще реализовать формат PDB.
https://github.com/Microsoft/microsoft-pdb/
Чтобы фактически вывести вывод файла, просто используйте это:
https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe
cvdump Whatever.pdb
Программы просмотра PDB (GUI)
Портативный PDB
инструменты
- SourceLink:
sourcelink print-urls Foo.pdb
- SourceLink:
Программный доступ
Классический (непереносимый) PDB
- инструменты
- llvm-pdbutil:
llvm-pdbutil dump -all Foo.pdb
- cvdump:
cvdump Foo.pdb
- DBH:
dbh.exe -v Foo.pdb dump
- PDBStr:
pdbstr.exe -r -p:Foo.pdb -s:StreamName
- llvm-pdbutil:
- Программный доступ
В настоящее время я настоятельно рекомендую парсер PDB LLVM, llvm-pdbutil.
Это отличный и многофункциональный дампер PDB, прекрасно дополняющий cvdump от Microsoft.
Для деталей и документации, см.:
- LLVM в Windows теперь поддерживает информацию об отладке PDB (блог проекта LLVM)
- llvm-pdbutil - экспертиза и диагностика файлов PDB (домашняя страница LLVM)
Несколько полезных команд для начала работы:
llvm-pdbutil dump -all your.pdb
llvm-pdbutil bytes -syms your.pdb
llvm-pdbutil -help
Получение llvm-pdbutil:
Согласно LLVM 7.0.0, последней официальной версии, llvm-pdbutil.exe
не распространяется с двоичными файлами LLVM, поэтому он должен быть собран из исходного кода.
Однако, если у вас все в порядке с неофициальным 64-разрядным двоичным файлом Windows, мои домашние сборки llvm-pdbutil доступны здесь (обратите внимание, что требуется распространяемый Visual C++ 2015):
https://github.com/shaharv/llvm-pdbutil-builds/releases
Сборка llvm-pdbutil:
Для сборки llvm-pdbutil из исходного кода в Windows вам необходимо получить и настроить сборку LLVM. Следуйте инструкциям на https://llvm.org/docs/GettingStarted.html.
Однако есть некоторые необходимые дополнения для поддержки PDB. Подводя итог (для VS 2017):
- Клонировать репозиторий LLVM:
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build && cd build
- Если не работает с консоли Visual Studio:
set VSINSTALLDIR=c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\
, cmake -G "Visual Studio 15 2017" -A x64 -Thost=x64 -DLLVM_ENABLE_DIA_SDK=ON ../llvm
- В Visual Studio создайте
Tools/llvm-pdbutil
проект.
Вы можете использовать инструмент DBH из Windows SDK.
&'C:\Program Files\Debugging Tools for Windows (x64)\dbh.exe' -v MySymbol.pdb dump