【问题标题】:Removing type information from symbols partly从符号中部分删除类型信息
【发布时间】:2015-08-26 20:46:53
【问题描述】:

正如我们最近了解到的,Microsoft has stripped type information from symbolsntdll 的某些版本中。

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

我在在线文档中找不到compiler switch 可以让我传递要排除的类型列表。

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

【问题讨论】:

  • This 线程为您提供了一些不错的选择。
  • @SteveJohnson:这个问题是关于将私有符号转换为公共符号,这不是我想要实现的。我想要公开->公开。

标签: windbg debug-symbols


【解决方案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 开关。

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2014-10-03
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多