分类: 系统运维
2009-03-22 19:38:32
断点通常需要两层的表示:
l 逻辑表示:指在源代码中设置的断点,用来告诉用户的;
l 物理表示:指真实的在机器码中写入,是用来告诉物理机器的。断点必须存储写入位置的机器指令,以便能够在移除断点的时候恢复原来的指令。
断点存在条件断点。
断点存在多对一的关系,即多个用户在同一个地方设置断点(多个逻辑断点对应一个物理断点),当然也有多对多的关系。下图展示了这样的一个关系:
断点的设置和激活
下面是断点的设置算法:
下面是简单的物理断点数据结构:
断点激活算法:
断点的验证
断点验证算法:
临时断点
临时断点是指只运行一次的断点。
内部断点
内部断点对用户是不可见的。他们是被调试器设置的。
一般主要用于:
l 单步调试:内部断点和运行到内部断点;
l 跳出函数:在函数返回地址设置内部断点;
l 进入函数
进入函数和跳出函数
下图展示了跳入函数和跳出函数:
进入函数算法:
下图是step over算法:
chinaunix网友2009-04-23 14:37:41
This breakpoint is in an overlay section. Shall we set a breakpoint at the LMA? 这两句话怎么翻译阿?? 理解不了。。。 就是那个overlay section 怎么解释?? LMA 这个是什么的缩写阿?? 谢谢
chinaunix网友2009-04-22 11:36:47
恩,现在明白了。。。谢谢你啊,,真的!! 能不能给我下你的邮箱阿?? 呵呵,下次才好找你请教 zhongztc@sina.com
chinaunix网友2009-04-22 10:42:51
顺便说一下,这只是一个算法描述 真正实现调试器的时候要结合相应的系统机制,比如既然debugger已经不占据处理机了,那还怎样wait for the next debug notification呢? 各种操作系统对此有不同的支持方法,所以不必在这些细节上太较真了,呵呵。