Generate WPP TMF Files from PDBs

Extract WPP TMF decode files from PDBs

WPP trace events are binary until a viewer can find the matching formatting metadata. If you do not want to distribute private PDBs, generate TMF files from the build PDB and give WppViewer Studio the TMF directory instead. TMF files are preferred over PDBs because they are smaller and can be distributed separately from the driver binaries.

The important rule is build matching: generate the TMF files from the same full or private PDB that corresponds to the driver or application that produced the trace. Public symbols usually do not contain the WPP formatting instructions.

Generate TMF Files with Tracepdb

Open a Developer Command Prompt or WDK command prompt where the WDK tools are onPATH, then run tracepdb against the private PDB.

mkdir C:\tracing\tmf
tracepdb -f C:\build\driver\x64\MyDriver.pdb -p C:\tracing\tmf

-f names the PDB input. -p names the directory where Tracepdb writes the generated .tmf files. The TMF file names are based on the WPP message GUIDs, so do not rename them.

To process many PDBs under one build output tree, use a wildcard and recursive search:

tracepdb -f C:\build\drivers\*.pdb -s -p C:\tracing\tmf

Alternate: TraceView -parsepdb

WDK TraceView can also create TMF files from a PDB:

traceview -parsepdb C:\build\driver\x64\MyDriver.pdb -p C:\tracing\tmf

This is useful on machines where TraceView is already part of the workflow. For scripted build output, tracepdb is usually the clearer choice.

Set TRACE_FORMAT_SEARCH_PATH

Set TRACE_FORMAT_SEARCH_PATH to the directory that contains the generated TMF files. This helps WPP formatting tools such as Tracefmt and debugger WMI tracing extensions find message-GUID-named TMF files without passing a path every time.

set TRACE_FORMAT_SEARCH_PATH=C:\tracing\tmf

For a persistent user environment variable:

setx TRACE_FORMAT_SEARCH_PATH "C:\tracing\tmf"

If you use multiple TMF roots, separate them with semicolons:

set TRACE_FORMAT_SEARCH_PATH=C:\tracing\tmf;D:\symbols\driver-tmf

TraceView has its own TMF/PDB selection flow and does not use this environment variable when opening trace logs. WppViewer Studio also lets you add TMF and PDB paths directly in the workspace, which is the setting that matters for WppViewer decoding.

Use the TMF Directory in WppViewer Studio

  1. Open your trace configuration or ETL file in WppViewer Studio.
  2. Add C:\tracing\tmf to the TMF decode paths.
  3. Reload the ETL file, or restart the live WPP capture session.
  4. If messages are still unformatted, confirm the PDB/TMF matches the exact traced build.

Troubleshooting

  • No TMF files were produced. Confirm the PDB is private/full and was built from code instrumented with WPP macros.
  • Messages still say no format information. Verify the TMF directory is configured in WppViewer and that the TMF file names were not changed.
  • Some providers decode and others do not. Generate TMFs for every PDB that contains WPP trace providers used in the trace.
  • Tracefmt works but WppViewer does not. Add the TMF path to the WppViewer workspace; do not rely only on the process environment.

For the broader decode checklist, see WPP traces not showing. For opening saved logs, see how to open an ETL file.