部分从符号中删除类型信息

时间:2015-08-26 20:46:54

标签: windbg debug-symbols

我们最近了解到ntdll的某些版本中的Microsoft has stripped type information from symbols

想象一下,我有一个库的源代码,我想发布公共符号,但从该PDB中删除一些类型定义,我将如何在技术上实现这一点,特别是在不破坏PDB身份信息(时间戳和校验和)的情况下?

我在在线文档中找不到允许我传递要排除的类型列表的compiler switch

请注意,我不想从私有符号切换到公共符号,而是减少公共符号。

1 个答案:

答案 0 :(得分:1)

WinDbg附带了一个名为PDBCopy的工具。 -f命令行开关允许过滤公共符号:

C:\Program Files\Windows Kits\10\Debuggers\x64>pdbcopy /?

PDBCopy v12.00.30523
usage: PDBCopy <source_pdb> <destination_pdb> [-p] [-s] [-f] [-F] [-a] [-A] [-?]
        [-p]                remove private debug information
        [-s]                create new signature
        [-f:{@file|symbol}] filter specific public symbols out of stripped pdb
        [-F:{@file|symbol}] leave only specific public symbols in stripped pdb
        [-a]                leave all annotation symbols in stripped pdb
        [-a:{@file|symbol}] filter specific annotation symbols out of stripped pdb
        [-A:{@file|symbol}] leave only specific annotation symbols in stripped pdb
        [-?]                display this message

这至少存在于WinDbg 6.8之后。 WinDbg 6.12中添加了-a个开关。