Чтение файла .pdb - PullRequest
       23

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

23 голосов
/ 11 января 2010

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

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

Ответы [ 4 ]

42 голосов
/ 11 января 2010

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

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

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

22 голосов
/ 29 мая 2016

Microsoft выпустила исходный код своих форматов PDB, чтобы другие разработчики компиляторов, такие как команда LLVM, могли проще реализовать формат PDB.

https://github.com/Microsoft/microsoft-pdb/

Чтобы фактически вывести вывод файла, просто используйте это:

https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe

cvdump Whatever.pdb
5 голосов
/ 05 февраля 2019

В настоящее время я настоятельно рекомендую парсер LBVM PDB, 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.
3 голосов
/ 17 октября 2018

Вы можете использовать DBH tool из Windows SDK.

&'C:\Program Files\Debugging Tools for Windows (x64)\dbh.exe' -v MySymbol.pdb dump
...