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内核调试

帖子发起人: jlflyfox   发起时间: 2010-08-17 19:23 下午   回复: 4

Print Search
帖子排序:    
   2010-08-17, 19:23 下午
jlflyfox 离线,最后访问时间: 2009/1/24 22:08:06 jlflyfox

发帖数前25位
注册: 2008-10-28
发 贴: 65
请问张老师一个调试器中修改函数代码继续执行的问题
Reply Quote
一般来说,我们正在调试的时候不需要修改代码,但也有例外。
比如用vc调试一个函数,在这个函数中已经走了两步了,临时发现这个函数下面几行写得有问题,我们就立即修改保存,即可在这个函数执行过程中修改代码,而不用关闭进程,重新调试。
我想问的是,这个是如何实现的?
vc重新编译,关键是如何把编译好的局部二进制代码放到内存中,而且保存了上下文继续执行。
请张老师或其他高手指点下,我看《软件调试》里面似乎没有说这个。
当然如果上下内容修改太多,调试器一般会告诉调试者无法继续,这个是调试器本身业务逻辑判断了的,这个我倒不关心。

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

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
Reply Quote
这个功能叫EnC, Edit and Continue,当初引入PDB符号文件格式,一个原因就是为了支持这个功能。简单来说主要是要做增量编译,除了执行点要匹配外,还要检查局部变量和全局变量的变化...

这个功能太偏编译器和调试器细节了,有点超出《软件调试》想覆盖的范围 :-)
IP 地址: 已记录   报告
   2010-08-20, 12:09 下午
jlflyfox 离线,最后访问时间: 2009/1/24 22:08:06 jlflyfox

发帖数前25位
注册: 2008-10-28
发 贴: 65
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
Reply Quote
谢谢!
IP 地址: 已记录   报告
   2010-09-28, 01:26 上午
ggggchen 离线,最后访问时间: 2010/3/2 16:36:23 ggggchen

发帖数前200位
注册: 2007-12-12
发 贴: 4
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
Reply Quote
我一般是直接用WINDBG,修改@EIP寄存器,跳到想去的行,另外可以用ED,把内存内容改成我希望的.

你说的EDIT AND CONTINUE 太高深了
IP 地址: 已记录   报告
   2010-09-28, 17:44 下午
instruder 离线,最后访问时间: 2010/9/23 11:41:06 爱杀之爪

发帖数前150位
注册: 2010-07-28
发 贴: 8
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
Reply Quote
同ls,太深奥了,直接ed
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 请问张老师一个调试器中修改函数代码继续执行的问题

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