llvm-pdbutil - PDB File forensics and diagnostics
=================================================

.. contents::
   :local:

Synopsis
--------

:program:`llvm-pdbutil` [*subcommand*] [*options*]

Description
-----------

Display types, symbols, CodeView records, and other information from a
PDB file, as well as manipulate and create PDB files.  :program:`llvm-pdbutil`
is normally used by FileCheck-based tests to test LLVM's PDB reading and
writing functionality, but can also be used for general PDB file investigation
and forensics, or as a replacement for cvdump.

Subcommands
-----------

:program:`llvm-pdbutil` is separated into several subcommands each tailored to
a different purpose.  A brief summary of each command follows, with more detail
in the sections that follow.

  * :ref:`pretty_subcommand` - Dump symbol and type information in a format that
    tries to look as much like the original source code as possible.
  * :ref:`dump_subcommand` - Dump low level types and structures from the PDB
    file, including CodeView records, hash tables, PDB streams, etc.
  * :ref:`bytes_subcommand` - Dump data from the PDB file's streams, records,
    types, symbols, etc as raw bytes.
  * :ref:`yaml2pdb_subcommand` - Given a yaml description of a PDB file, produce
    a valid PDB file that matches that description.
  * :ref:`pdb2yaml_subcommand` - For a given PDB file, produce a YAML
    description of some or all of the file in a way that the PDB can be
    reconstructed.
  * :ref:`merge_subcommand` - Given two PDBs, produce a third PDB that is the
    result of merging the two input PDBs.

.. _pretty_subcommand:

pretty
~~~~~~

.. program:: llvm-pdbutil pretty

.. important::
   The **pretty** subcommand is built on the Windows DIA SDK, and as such is not
   supported on non-Windows platforms.

USAGE: :program:`llvm-pdbutil` pretty [*options*] <input PDB file>

Summary
^^^^^^^^^^^

The *pretty* subcommand displays a very high level representation of your
program's debug info.  Since it is built on the Windows DIA SDK which is the
standard API that Windows tools and debuggers query debug information, it
presents a more authoritative view of how a debugger is going to interpret your
debug information than a mode which displays low-level CodeView records.

Options
^^^^^^^

Filtering and Sorting Options
+++++++++++++++++++++++++++++

.. note::
   *exclude* filters take priority over *include* filters.  So if a filter
   matches both an include and an exclude rule, then it is excluded.

.. option:: -exclude-compilands=<string>

 When dumping compilands, compiland source-file contributions, or per-compiland
 symbols, this option instructs **llvm-pdbutil** to omit any compilands that
 match the specified regular expression.

.. option:: -exclude-symbols=<string>

 When dumping global, public, or per-compiland symbols, this option instructs
 **llvm-pdbutil** to omit any symbols that match the specified regular
 expression.

.. option:: -exclude-types=<string>

 When dumping types, this option instructs **llvm-pdbutil** to omit any types
 that match the specified regular expression.

.. option:: -include-compilands=<string>

 When dumping compilands, compiland source-file contributions, or per-compiland
 symbols, limit the initial search to only those compilands that match the
 specified regular expression.

.. option:: -include-symbols=<string>

 When dumping global, public, or per-compiland symbols, limit the initial
 search to only those symbols that match the specified regular expression.

.. option:: -include-types=<string>

 When dumping types, limit the initial search to only those types that match
 the specified regular expression.

.. option:: -min-class-padding=<uint>

 Only display types that have at least the specified amount of alignment
 padding, accounting for padding in base classes and aggregate field members.

.. option:: -min-class-padding-imm=<uint>

 Only display types that have at least the specified amount of alignment
 padding, ignoring padding in base classes and aggregate field members.

.. option:: -min-type-size=<uint>

 Only display types T where sizeof(T) is greater than or equal to the specified
 amount.

.. option:: -no-compiler-generated

 Don't show compiler generated types and symbols

.. option:: -no-enum-definitions

 When dumping an enum, don't show the full enum (e.g. the individual enumerator
 values).

.. option:: -no-system-libs

 Don't show symbols from system libraries

Symbol Type Options
+++++++++++++++++++
.. option:: -all

 Implies all other options in this category.

.. option:: -class-definitions=<format>

 Displays class definitions in the specified format.

 .. code-block:: text

    =all      - Display all class members including data, constants, typedefs, functions, etc (default)
    =layout   - Only display members that contribute to class size.
    =none     - Don't display class definitions (e.g. only display the name and base list)

.. option:: -class-order

 Displays classes in the specified order.

 .. code-block:: text

    =none            - Undefined / no particular sort order (default)
    =name            - Sort classes by name
    =size            - Sort classes by size
    =padding         - Sort classes by amount of padding
    =padding-pct     - Sort classes by percentage of space consumed by padding
    =padding-imm     - Sort classes by amount of immediate padding
    =padding-pct-imm - Sort classes by percentage of space consumed by immediate padding

.. option::  -class-recurse-depth=<uint>

 When dumping class definitions, stop after recursing the specified number of times.  The
 default is 0, which is no limit.

.. option::  -classes

 Display classes

.. option::  -compilands

 Display compilands (e.g. object files)

.. option::  -enums

 Display enums

.. option::  -externals

 Dump external (e.g. exported) symbols

.. option::  -globals

 Dump global symbols

.. option::  -lines

 Dump the mappings between source lines and code addresses.

.. option::  -module-syms

 Display symbols (variables, functions, etc) for each compiland

.. option::  -sym-types=<types>

 Type of symbols to dump when -globals, -externals, or -module-syms is
 specified. (default all)

 .. code-block:: text

    =thunks - Display thunk symbols
    =data   - Display data symbols
    =funcs  - Display function symbols
    =all    - Display all symbols (default)

.. option::  -symbol-order=<order>

 For symbols dumped via the -module-syms, -globals, or -externals options, sort
 the results in specified order.

 .. code-block:: text

    =none - Undefined / no particular sort order
    =name - Sort symbols by name
    =size - Sort symbols by size

.. option::  -typedefs

 Display typedef types

.. option::  -types

 Display all types (implies -classes, -enums, -typedefs)

Other Options
+++++++++++++

.. option:: -color-output

 Force color output on or off.  By default, color if used if outputting to a
 terminal.

.. option:: -load-address=<uint>

 When displaying relative virtual addresses, assume the process is loaded at the
 given address and display what would be the absolute address.

.. _dump_subcommand:

dump
~~~~

USAGE: :program:`llvm-pdbutil` dump [*options*] <input PDB file>

.. program:: llvm-pdbutil dump

Summary
^^^^^^^^^^^

The **dump** subcommand displays low level information about the structure of a
PDB file.  It is used heavily by LLVM's testing infrastructure, but can also be
used for PDB forensics.  It serves a role similar to that of Microsoft's
`cvdump` tool.

.. note::
   The **dump** subcommand exposes internal details of the file format.  As
   such, the reader should be familiar with :doc:`/PDB/index` before using this
   command.

Options
^^^^^^^

MSF Container Options
+++++++++++++++++++++

.. option:: -streams

 dump a summary of all of the streams in the PDB file.

.. option:: -stream-blocks

 In conjunction with :option:`-streams`, add information to the output about
 what blocks the specified stream occupies.

.. option:: -summary

 Dump MSF and PDB header information.

Module & File Options
+++++++++++++++++++++

.. option:: -modi=<uint>

 For all options that dump information from each module/compiland, limit to
 the specified module.

.. option:: -files

 Dump the source files that contribute to each displayed module.

.. option:: -il

 Dump inlinee line information (DEBUG_S_INLINEELINES CodeView subsection)

.. option:: -l

 Dump line information (DEBUG_S_LINES CodeView subsection)

.. option:: -modules

 Dump compiland information

.. option:: -xme

 Dump cross module exports (DEBUG_S_CROSSSCOPEEXPORTS CodeView subsection)

.. option:: -xmi

 Dump cross module imports (DEBUG_S_CROSSSCOPEIMPORTS CodeView subsection)

Symbol Options
++++++++++++++

.. option:: -globals

 dump global symbol records

.. option:: -global-extras

 dump additional information about the globals, such as hash buckets and hash
 values.

.. option:: -publics

 dump public symbol records

.. option:: -public-extras

 dump additional information about the publics, such as hash buckets and hash
 values.

.. option:: -symbols

 dump symbols (functions, variables, etc) for each module dumped.

.. option:: -sym-data

 For each symbol record dumped as a result of the :option:`-symbols` option,
 display the full bytes of the record in binary as well.

Type Record Options
+++++++++++++++++++

.. option:: -types

 Dump CodeView type records from TPI stream

.. option:: -type-extras

 Dump additional information from the TPI stream, such as hashes and the type
 index offsets array.

.. option:: -type-data

 For each type record dumped, display the full bytes of the record in binary as
 well.

.. option:: -type-index=<uint>

 Only dump types with the specified type index.

.. option:: -ids

 Dump CodeView type records from IPI stream.

.. option:: -id-extras

 Dump additional information from the IPI stream, such as hashes and the type
 index offsets array.

.. option:: -id-data

 For each ID record dumped, display the full bytes of the record in binary as
 well.

.. option:: -id-index=<uint>

 only dump ID records with the specified hexadecimal type index.

.. option:: -dependents

 When used in conjunction with :option:`-type-index` or :option:`-id-index`,
 dumps the entire dependency graph for the specified index instead of just the
 single record with the specified index.  For example, if type index 0x4000 is
 a function whose return type has index 0x3000, and you specify
 `-dependents=0x4000`, then this would dump both records (as well as any other
 dependents in the tree).

Miscellaneous Options
+++++++++++++++++++++

.. option:: -all

 Implies most other options.

.. option:: -section-contribs

 Dump section contributions.

.. option:: -section-headers

 Dump image section headers.

.. option:: -section-map

 Dump section map.

.. option:: -string-table

 Dump PDB string table.

.. _bytes_subcommand:

bytes
~~~~~

USAGE: :program:`llvm-pdbutil` bytes [*options*] <input PDB file>

.. program:: llvm-pdbutil bytes

Summary
^^^^^^^

Like the **dump** subcommand, the **bytes** subcommand displays low level
information about the structure of a PDB file, but it is used for even deeper
forensics.  The **bytes** subcommand finds various structures in a PDB file
based on the command line options specified, and dumps them in hex.  Someone
working on support for emitting PDBs would use this heavily, for example, to
compare one PDB against another PDB to ensure byte-for-byte compatibility.  It
is not enough to simply compare the bytes of an entire file, or an entire stream
because it's perfectly fine for the same structure to exist at different
locations in two different PDBs, and "finding" the structure is half the battle.

Options
^^^^^^^

MSF File Options
++++++++++++++++

.. option:: -block-range=<start[-end]>

 Dump binary data from specified range of MSF file blocks.

.. option:: -byte-range=<start[-end]>

 Dump binary data from specified range of bytes in the file.

.. option:: -fpm

 Dump the MSF free page map.

.. option:: -stream-data=<string>

 Dump binary data from the specified streams.  Format is SN[:Start][@Size].
 For example, `-stream-data=7:3@12` dumps 12 bytes from stream 7, starting
 at offset 3 in the stream.

PDB Stream Options
++++++++++++++++++

.. option:: -name-map

 Dump bytes of PDB Name Map

DBI Stream Options
++++++++++++++++++

.. option:: -ec

 Dump the edit and continue map substream of the DBI stream.

.. option:: -files

 Dump the file info substream of the DBI stream.

.. option:: -modi

 Dump the modi substream of the DBI stream.

.. option:: -sc

 Dump section contributions substream of the DBI stream.

.. option:: -sm

 Dump the section map from the DBI stream.

.. option:: -type-server

 Dump the type server map from the DBI stream.

Module Options
++++++++++++++

.. option:: -mod=<uint>

 Limit all options in this category to the specified module index.  By default,
 options in this category will dump bytes from all modules.

.. option:: -chunks

 Dump the bytes of each module's C13 debug subsection.

.. option:: -split-chunks

 When specified with :option:`-chunks`, split the C13 debug subsection into a
 separate chunk for each subsection type, and dump them separately.

.. option:: -syms

 Dump the symbol record substream from each module.

Type Record Options
+++++++++++++++++++

.. option:: -id=<uint>

 Dump the record from the IPI stream with the given type index.

.. option:: -type=<uint>

 Dump the record from the TPI stream with the given type index.

.. _pdb2yaml_subcommand:

pdb2yaml
~~~~~~~~

USAGE: :program:`llvm-pdbutil` pdb2yaml [*options*] <input PDB file>

.. program:: llvm-pdbutil pdb2yaml

Summary
^^^^^^^

Options
^^^^^^^

.. _yaml2pdb_subcommand:

yaml2pdb
~~~~~~~~

USAGE: :program:`llvm-pdbutil` yaml2pdb [*options*] <input YAML file>

.. program:: llvm-pdbutil yaml2pdb

Summary
^^^^^^^

Generate a PDB file from a YAML description.  The YAML syntax is not described
here.  Instead, use :ref:`llvm-pdbutil pdb2yaml <pdb2yaml_subcommand>` and
examine the output for an example starting point.

Options
^^^^^^^

.. option:: -pdb=<file-name>

Write the resulting PDB to the specified file.

.. _merge_subcommand:

merge
~~~~~

USAGE: :program:`llvm-pdbutil` merge [*options*] <input PDB file 1> <input PDB file 2>

.. program:: llvm-pdbutil merge

Summary
^^^^^^^

Merge two PDB files into a single file.

Options
^^^^^^^

.. option:: -pdb=<file-name>

Write the resulting PDB to the specified file.
