|
|
|
|
|
|
|
Windows内核调试
帖子发起人: jlflyfox 发起时间: 2010-08-17 19:23 下午 回复: 4
|
帖子排序:
|
|
|
|
2010-08-17, 19:23 下午
|
jlflyfox
注册: 2008-10-28
发 贴: 65
|
|
|
一般来说,我们正在调试的时候不需要修改代码,但也有例外。
比如用vc调试一个函数,在这个函数中已经走了两步了,临时发现这个函数下面几行写得有问题,我们就立即修改保存,即可在这个函数执行过程中修改代码,而不用关闭进程,重新调试。
我想问的是,这个是如何实现的?
vc重新编译,关键是如何把编译好的局部二进制代码放到内存中,而且保存了上下文继续执行。
请张老师或其他高手指点下,我看《软件调试》里面似乎没有说这个。
当然如果上下内容修改太多,调试器一般会告诉调试者无法继续,这个是调试器本身业务逻辑判断了的,这个我倒不关心。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2010-08-18, 21:10 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
|
|
|
|
这个功能叫EnC, Edit and Continue,当初引入PDB符号文件格式,一个原因就是为了支持这个功能。简单来说主要是要做增量编译,除了执行点要匹配外,还要检查局部变量和全局变量的变化...
这个功能太偏编译器和调试器细节了,有点超出《软件调试》想覆盖的范围 :-)
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2010-08-20, 12:09 下午
|
jlflyfox
注册: 2008-10-28
发 贴: 65
|
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
|
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2010-09-28, 01:26 上午
|
ggggchen
注册: 2007-12-12
发 贴: 4
|
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
|
|
|
|
我一般是直接用WINDBG,修改@EIP寄存器,跳到想去的行,另外可以用ED,把内存内容改成我希望的.
你说的EDIT AND CONTINUE 太高深了
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2010-09-28, 17:44 下午
|
爱杀之爪
注册: 2010-07-28
发 贴: 8
|
Re: 请问张老师一个调试器中修改函数代码继续执行的问题
|
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » Windows内核调试 » Re: 请问张老师一个调试器中修改函数代码继续执行的问题
|
|
|
|
|
|