Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: MT   发起时间: 2014-06-13 12:55 下午   回复: 2

Print Search
帖子排序:    
   2014-06-13, 12:55 下午
nydzdoking 离线,最后访问时间: 2014/7/6 15:15:32 MT

发帖数前150位
注册: 2013-11-28
发 贴: 7
Sleep [|-)] 求助 dt 显示不了结构成员
Reply Quote

今天想写一个注册表监控玩玩,不料。。碰一坑。。
想dt REG_PRE_CREATE_KEY_INFORMATION结构,死活显示不出来,老是显示该符号找不到!

我先说说我的环境:
双机调试,windbg+virtualbox. 虚拟机里的系统是xp sp3,也是被调试的系统.windbg放在物理机上。
1.windbg符号设置:
  SRV*D:\Sym\winxpsp3*http://msdl.microsoft.com/download/symbols

2.kd> lml
start    end        module name
7c920000 7c9b3000   ntdll      (pdb symbols)          d:\symbols\winxpsp3\ntdll.pdb\1751003260CA42598C0FB326585000ED2\ntdll.pdb
804d8000 806ef380   nt         (pdb symbols)          d:\symbols\winxpsp3\ntoskrnl.pdb\C51C20EDB8624D43A7985BE44182DE442\ntoskrnl.pdb
806f0000 80703d00   hal        (pdb symbols)          d:\symbols\winxpsp3\halacpi.pdb\52475CC399844839AD8ADF647D0AF71A1\halacpi.pdb
bf000000 bf011600   dxg        (pdb symbols)          d:\symbols\winxpsp3\dxg.pdb\1BF735C70BDA42F7A25DCAEAA44B79001\dxg.pdb
bf012000 bf029000   VBoxDisp   (export symbols)       VBoxDisp.dll
bf800000 bf9caa80   win32k     (pdb symbols)          d:\symbols\winxpsp3\win32k.pdb\4366589EA5CD465FBA0BC25440B93A0C2\win32k.pdb
f4751000 f477b180   kmixer     (pdb symbols)          d:\symbols\winxpsp3\kmixer.pdb\974481661DB04BA896523C719B37A8BF1\kmixer.pdb
f47cc000 f480ca80   HTTP       (pdb symbols)          d:\symbols\winxpsp3\http.pdb\B5A46191250E412D80E9D9E9DDA2F4DA1\http.pdb
f4add000 f4b34600   srv        (pdb symbols)          d:\symbols\winxpsp3\srv.pdb\B71D43221C284A288535837C8BDEA3302\srv.pdb
f4b5d000 f4b89180   mrxdav     (pdb symbols)          d:\symbols\winxpsp3\mrxdav.pdb\EDD7D9E6E63B43DBA5059A72CE89286E1\mrxdav.pdb

......

基本上大部份模块均加载上了符号!

3.执行如下命令
kd> dt  _REG_PRE_CREATE_KEY_INFORMATION
Symbol _REG_PRE_CREATE_KEY_INFORMATION not found.
kd> dt  REG_PRE_CREATE_KEY_INFORMATION
Symbol REG_PRE_CREATE_KEY_INFORMATION not found.

而我在msdn中查看文档显示下:
REG_PRE_CREATE_KEY_INFORMATION
The REG_PRE_CREATE_KEY_INFORMATION structure contains the name of a registry key that is about to be created.

typedef struct _REG_PRE_CREATE_KEY_INFORMATION {
  PUNICODE_STRING  CompleteName;
} REG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_CREATE_KEY_INFORMATION;


Members
CompleteName
A pointer to a UNICODE_STRING structure that contains the complete path of the registry key.
Requirements
Versions: Available only on Microsoft Windows XP.


说明这个结构信息xp是支持的呀!


为什么会造成这种情况,我很迷惑。自己也去百度找了,没找到相关信息。
这到底是什么原因造成的呢,该如何解决!求求各位兄弟姐妹指点一下,拜谢!


IP 地址: 已记录   报告
   2014-06-13, 21:39 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 求助 dt 显示不了结构成员
Reply Quote
你使用的是剥离私有信息后的公开PDB符号,里面只包含少量的类型信息,不包含REG_PRE_CREATE_KEY_INFORMATION是正常的。
根据结构定义,唯一的结构成员是一个UNICODE_STRING指针,UNICODE_STRING的定义是包含在公开PDB中的
0:000> dt _UNICODE_STRING
ntdll!_UNICODE_STRING
   +0x000 Length           : Uint2B
   +0x002 MaximumLength    : Uint2B
   +0x004 Buffer           : Ptr32 Uint2B




IP 地址: 已记录   报告
   2014-06-16, 09:30 上午
nydzdoking 离线,最后访问时间: 2014/7/6 15:15:32 MT

发帖数前150位
注册: 2013-11-28
发 贴: 7
Re: 求助 dt 显示不了结构成员
Reply Quote

原来是这样啊。。。这个问题迷茫我好久了。。非常感谢老雷!

微软真蛋疼啊!!!!MSDN中公开的结构,都已经公开的结构,,,为何多此一举在符号中去掉该类型信息。

幸好这只有一个成员,要是多个成员,让我们写代码的人调试时不得哭死啊!!


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 求助 dt 显示不了结构成员

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.