谁能给我讲讲调试器原理,分不够,再开几贴

sh79210 2003-11-04 02:27:39
调试器原理方面有什么书可以看,推荐一下?
问题:
调试器和被调试的程序是怎么样转换的呀?
比如在vc的调试环境下,我单步调试,tf举起来了,vc是怎么把控制给被调程序,而被调程序是怎么又把控制返回给vc的?
...全文
174 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
atm2001 2003-11-16
  • 打赏
  • 举报
回复
不是巴西,是俄罗斯的Zombie阿.
nonocast 2003-11-16
  • 打赏
  • 举报
回复
MARK
cwanter 2003-11-16
  • 打赏
  • 举报
回复
看看《核心编程》第2 5章未处理异常和C + +异常。
redleaves 2003-11-14
  • 打赏
  • 举报
回复
如果你的变量是寄存器变量当然不可能在寄存器被改变之后再看到变量的值。
现在的高级语言对变量的作用域有相当严格的定义,如果一个变量在它的作用域结束之前就被覆盖了,那么只能说是这个编译器有问题。而且为了实现变量的作用域控制,大多数编译器都把局部变量放到栈里,所以,通常,我们在调试程序时看到的变量的值都在栈里保存。
所以,对于你说的那种问题,要么是变量本身在栈里(当然可以监视它的值),要么就已经超出了它的作用域。
通常,在调试信息中会给出关于变量的详细信息,通过这些信息就可以定位到变量的位置。
紫郢剑侠 2003-11-14
  • 打赏
  • 举报
回复
计得有个巴西人写的WINDOWS下的调试器, 用TASM5汇编, 提供源代码. 楼主可以找来看看.
hbrr 2003-11-13
  • 打赏
  • 举报
回复
有个问题:寄存器的个数有限,假如我在离断点很远的地方(在同一个函数里)对一个变量做了操作
后来就再没处理过它,那在断点处,我却可以查看到这个变量的值,应该说寄存器中不可能有这个变量的信息的?这个是怎么实现的啊???十分不明白!!!谢谢了!!
gridcomputing 2003-11-13
  • 打赏
  • 举报
回复
up
baobeixiong 2003-11-13
  • 打赏
  • 举报
回复
9494
atm2001 2003-11-12
  • 打赏
  • 举报
回复
Trace32是开源的测试器,你去看看好不好,你的问题类似于我知道P=M+N*C
但是请证明P=M+N({1+1}歌德巴赫)
....要想深入了解,建议你仔细研究一下Windows的结构.
pankun 2003-11-12
  • 打赏
  • 举报
回复
VC这类的调试环境是用的系统的调试API,文档中心有相关文章.
peterlihui 2003-11-12
  • 打赏
  • 举报
回复
mark
会思考的草 2003-11-07
  • 打赏
  • 举报
回复
核心调试器,使用单步中断,和调试寄存器DRx
redleaves 2003-11-07
  • 打赏
  • 举报
回复
调试器和被调试程序是通过中断系统来实现的.不过在Windows下,这些工作都不需要你来做了.Windows封装了一套完整的调试接口.
你只要建立一个调试器,用它打开(或建立)一个被调试进程,然后根据调试的目标中所包含的调试信息找出源代码与机器码之间的对映关系.在你要中断的地方加一个int3指令(并记录下原来的值),这个指令的代码是0xcc,当目标执行到int3时,它就产生了一个中断,这时目标程序停止运行,并将它的运行状态保存下来,再由操作系统接管.在Windows下,你的调试器就会接收到一个中断消息,并得到目标程序运行的状态(所有的寄存器),你在调试器中把状态中的IP寄存器的值减1,然后把那个位置的int3指令还原成它原来的值,再返回中断,这时候目标程序就可以继续运行下去.这样就实现了一个"断点".当然,你也可以在目标进行中断的时候修改它的内存空间或着寄存器,这样就可以实现动态修改变量的值.
如果你把跟踪标志设为1,这时候你的系统就进入跟踪状态,每执行一条机器指令就会产生一个中断,当进行中断时,系统会自己保存当时的运行状态,然后全速运行你的中断代码,在Windows下,你的调试器同样会收到相应的消息,这时你只要对目标做相应的处理就可以实现对目标的跟踪.
withoutway 2003-11-07
  • 打赏
  • 举报
回复
是不是依靠CPU中PSW(程序状态字)的TF来实现的吗?

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧