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

《软件调试》答疑

帖子发起人: 小维   发起时间: 2012-02-11 21:21 下午   回复: 2

Print Search
帖子排序:    
   2012-02-11, 21:21 下午
fccmw 离线,最后访问时间: 2012/2/11 13:10:41 小维

无等级
注册: 2012-02-11
发 贴: 1
一个关于栈回溯的问题!
Reply Quote

      一直在读《软件调试》这本书,感觉内容很丰富啊,作者对操作系统和cpu架构的理解,让人叹服!

       有一个小问题,还请张老师不吝赐教。张老师在书中给出了很多表现某些系统函数调用过程的栈回溯,本人也想通过windbg工具尝试看到书中的栈回溯的清单,但是一直没有弄明白作者是通过怎么样的步骤,看到这些栈回溯清单的。比如第4章的4.2.8节(P92页),清单4-4,“显示了当使用vs2005调试本地的C++程序时,vs2005调用SetThreadContext API来设置调试寄存器的函数调用过程(栈回溯)”。请问张老师,这个栈回溯清单在windbg中如何得到,您是如何定位到SetThreadContext函数的呢,书中还有好多显示函数调用过程的栈回溯清单,请问您,您是怎么定位到这些函数,然后通过kn指令显示栈回溯清单的呢?谢谢张老师!

   


IP 地址: 已记录   报告
   2012-02-12, 17:46 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 一个关于栈回溯的问题!
Reply Quote

多谢反馈,简单说,需要三步:

1,把WinDBG附加到VS2005

2,使用bp设置断点bp kernel32!SetThreadContext

如果想问怎么知道有SetThreadContext这个函数的,那么主要是要靠日常的积累,不然的话就是x kernel32!*Context*,列出所有与Context有关的函数,然后排查

设好断点后,g命令恢复vs2005执行

3,在VS2005中开始调试,并设置变量监视断点,以便触发断点,断点触发后,执行kn 100得到清单4-4

 

 


IP 地址: 已记录   报告
   2012-02-12, 20:44 下午
darkplayer 离线,最后访问时间: 2012/2/5 1:44:24 dark

无等级
注册: 2012-02-05
发 贴: 1
Re: 一个关于栈回溯的问题!
Reply Quote

谢谢张老师!


IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》答疑 » Re: 一个关于栈回溯的问题!

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