哪位大侠可以指点一下调试器得工作原理?

智慧的星球 2003-10-30 08:51:05
我不太明白调试器是如何工作得,为什么可以在断点停下来,并且查看内存中得数据?

希望大侠指点,不胜感激!
...全文
52 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
智慧的星球 2003-11-04
  • 打赏
  • 举报
回复
谢谢各位
jazzny 2003-11-03
  • 打赏
  • 举报
回复
INT 03,
cpu的断点调试指令, 在vc下, F10后, 再右键菜单中选择go to disassembly, 就可看到好多int 03,

当要产生release 版本的exe时, 像诸如int 03的指令就都去掉了
智慧的星球 2003-11-03
  • 打赏
  • 举报
回复
各位大侠的发言,让俺茅塞顿开。

各位的点拨,把俺带入了程序开发的新境界。

不过,偶还想知道的更详细,哪位可以提供相关的资料,或者链接,在下不胜感激~。
fierygnu 2003-10-30
  • 打赏
  • 举报
回复
to Flamesong(舍我其谁) : 好象是你没明白。。。
Flamesong 2003-10-30
  • 打赏
  • 举报
回复
还是没有人能说得清,我觉得是在编译的时候产生了调试停顿的指令,类似一个容器,把要执行的程序逐条装入进来运行,那个容器就是一个进程.
不知我说的对不对,望大虾指点.
fierygnu 2003-10-30
  • 打赏
  • 举报
回复
解释型语言,解释器就是CPU。。。
蟑螂工作室 2003-10-30
  • 打赏
  • 举报
回复
学习!
解释性语言和本地代码看样还有些不同?
智慧的星球 2003-10-30
  • 打赏
  • 举报
回复
对于解释型得语言,看来就需要模拟这个过程了。
智慧的星球 2003-10-30
  • 打赏
  • 举报
回复
哦,原来需要底层支持,有些明白了~
fierygnu 2003-10-30
  • 打赏
  • 举报
回复
操作系统提供了一个ptrace系统调用(UNIX下),用来由父进程控制子进程的执行,这是调试器的基础。当然操作系统的实现需要底层硬件的支持。
sandrowjw 2003-10-30
  • 打赏
  • 举报
回复
和cpu结构有关,
The single step exception(INT 1) occurs after every instruction if the trace bit in the flags register is equal to one.
When this exception occurs, the return address on the stack is the address of the next instruction to execute. The trap handler can decode this opcode and decide how to proceed. Most debuggers use the trace exception to check for watchpoints and other events that change dynamically during program execution. Debuggers that use the trace exception for single stepping often disassemble the next instruction using the return address on the stack as a pointer to that instruction's opcode bytes.(摘自<The Art of Assembly language>)
如此就可以在中断的时候获得程序当前的执行情况了。

ttlb 2003-10-30
  • 打赏
  • 举报
回复
up
tonyzhengjq 2003-10-30
  • 打赏
  • 举报
回复
我也不会,学习!
北极猩猩 2003-10-30
  • 打赏
  • 举报
回复
一般机器里都有相关的调试指令和中断
Ffwflg 2003-10-30
  • 打赏
  • 举报
回复
在程序中设置的断点将在该处插入一条“trap中断指令”,之后被调试程序挂起,我们就可以通过调试器观察器该程序中的变量等值等内容,其中变量名等式通过编译器以一定格式写在被调试起内存空间的数据(没有被该程序使用的数据),而当调试器有一定权限时(如父进程对子进程)就可以读取其它进程(这里就是被调试进程)的内存空间,即可以读出变量的值。
这是需要操作系统底层、甚至硬件中断机制支持的,对应在不同的操作系统上实现机制也不相同,有些调试器也可以以解释器的机制进行调试。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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