windows PDB文件是否包含数据结构?

k3bvogb1  于 2023-03-24  发布在  Windows
关注(0)|答案(1)|浏览(172)

我是reading this document,它说PDB包含type data。这意味着它包含C结构信息吗?
我在https://github.com/microsoft/microsoft-pdb中找不到这样的东西。似乎只有类型名称可用,但没有C结构或C++类定义。
我说错了吗?

4xrmg8kj

4xrmg8kj1#

是的,类型信息可以包含在PDB中。显示类型的WinDbg命令是dt。如果您使用.symfix,Microsoft提供了一些类型定义供下载。由于ntdll加载到每个进程中,因此演示起来相当简单。
一个简单的例子是一个双向链表的列表条目,由一个前向和后向链接组成:

1:001> dt nt!_LIST_ENTRY
ntdll!_LIST_ENTRY
   +0x000 Flink            : Ptr64 _LIST_ENTRY
   +0x008 Blink            : Ptr64 _LIST_ENTRY

或Unicode字符串:

1:001> dt _UNICODE_STRING
ntdll!_UNICODE_STRING
   +0x000 Length           : Uint2B
   +0x002 MaximumLength    : Uint2B
   +0x008 Buffer           : Ptr64 Wchar

或临界区:

1:001> dt _RTL_CRITICAL_SECTION
ntdll!_RTL_CRITICAL_SECTION
   +0x000 DebugInfo        : Ptr64 _RTL_CRITICAL_SECTION_DEBUG
   +0x008 LockCount        : Int4B
   +0x00c RecursionCount   : Int4B
   +0x010 OwningThread     : Ptr64 Void
   +0x018 LockSemaphore    : Ptr64 Void
   +0x020 SpinCount        : Uint8B

相关问题