社区
汇编语言
帖子详情
谁能给我讲讲调试器原理,分不够,再开几贴
sh79210
2003-11-04 02:27:39
调试器原理方面有什么书可以看,推荐一下?
问题:
调试器和被调试的程序是怎么样转换的呀?
比如在vc的调试环境下,我单步调试,tf举起来了,vc是怎么把控制给被调程序,而被调程序是怎么又把控制返回给vc的?
...全文
174
14
打赏
收藏
谁能给我讲讲调试器原理,分不够,再开几贴
调试器原理方面有什么书可以看,推荐一下? 问题: 调试器和被调试的程序是怎么样转换的呀? 比如在vc的调试环境下,我单步调试,tf举起来了,vc是怎么把控制给被调程序,而被调程序是怎么又把控制返回给vc的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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来实现的吗?
用图文带你彻底弄懂GDB调试
原理
本文主要讲了GDB的模型,使用,断点指令和单步指令。是目前相关资料中比较全面的介绍,更可贵的是断点和单步指令的解析是网上很找到的知识点。这也是很多调试工具的本质所在,比如之前讲的kprob...
Windows程序调试----第二部分 调试工具----第7章 使用Visual C++
调试器
调试
本书由铁文手打整理,仅为方便个人查阅摘录 如喜欢本书,请购买正版 第7章使用Visual C++
调试器
调试 如果要寻找并消除错误,Visual C++
调试器
将是你最好的朋友。它有好几个著名的特性使得它很高效,也很好用,下面是我喜爱它的一些原因: •Visual C++
调试器
完全嵌入到了Visual C++
开
发环境,允许用户直接从源代码窗口使用
调试器
进行设置断点和
用图文带你彻底弄懂 GDB 调试
原理
转自:用图文带你彻底弄懂 GDB 调试
原理
(qq.com) 一、前言 这篇文章来聊聊大名鼎鼎的GDB,它的豪门背景咱就不提了,和它的兄弟GCC一样是含着金钥匙出生的,在GNU的家族中的地位不可撼动。相信每位嵌入式
开
发工程师都使用过gdb来调试程序,如果你说没有用过,那只能说明你的
开
发经历还不
够
坎坷,还需要继续被 BUG吊打。 我们都知道,在使用gcc编译时,可以使用-g选项在可执行文件中嵌入更多的调试信息,那么具体嵌入了哪些调试信息?这些调试信息是如何与二进制的指令之间进行相互交互...
浏览器调试功能介绍
浏览器调试功能介绍 平时我们在做爬虫的过程中,经常会遇到一些带有js加密的网站,想要破解js,学习使用浏览器的调试功能是必不可少的技能,这篇文章简单讲下如何使用Chrome浏览器的调试功能(主要指Source调试),并且后面简单使用几个例子进行了演示。 Source面板 首先来看一下Source面板,我这里将其分为四个部分: 接下来分别简单讲下这四个部分。 第一部分: Page:已加载的全部资源,以域名划分文件夹,ctrl+p进行搜索; Filesystem & Overrides:
原来gdb的底层调试
原理
这么简单
一、前言 这篇文章来聊聊大名鼎鼎的GDB,它的豪门背景咱就不提了,和它的兄弟GCC一样是含着金钥匙出生的,在GNU的家族中的地位不可撼动。相信每位嵌入式
开
发工程师都使用过gdb来调试程序,如果你说没有用过,那只能说明你的
开
发经历还不
够
坎坷,还需要继续被 BUG吊打。 我们都知道,在使用gcc编译时,可以使用-g选项在可执行文件中嵌入更多的调试信息,那么具体嵌入了哪些调试信息?这些调试信息是如何与二进制的指令之间进行相互交互?在调试的时候,调试信息中是如何获取函数调用栈中的上下文信息? 针对上面这些疑惑,道
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章