Чтение файла.pdb

У меня есть много файлов в формате.pdb, некоторые из них загружены, но до сих пор я не могу использовать или читать то, что находится внутри, поэтому я ищу, как прочитать и просмотреть формат файла.pdb из MS Windows XP.

Кто-нибудь из вас знает, как его открыть?

4 ответа

Если вы имеете в виду PDB, как в "программной базе данных", которую использует отладчик:

Файлы PDB содержат данные о файле, таком как EXE или DLL, который используется для отладки. Существуют открытые интерфейсы, которые позволяют извлекать данные из файла. Смотрите примеры здесь:

Если вы имеете в виду 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

Классический (непереносимый) PDB

  • инструменты
    1. llvm-pdbutil:llvm-pdbutil dump -all Foo.pdb
    2. cvdump:cvdump Foo.pdb
    3. DBH:dbh.exe -v Foo.pdb dump
    4. PDBStr:pdbstr.exe -r -p:Foo.pdb -s:StreamName
  • Программный доступ

В настоящее время я настоятельно рекомендую парсер PDB LLVM, llvm-pdbutil.

Это отличный и многофункциональный дампер PDB, прекрасно дополняющий cvdump от Microsoft.
Для деталей и документации, см.:

Несколько полезных команд для начала работы:

  • 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
Другие вопросы по тегам