breakpoint和watchpoint/data breakpoint

原创 2012年03月28日 19:46:08

breakpoint很容易理解,是程序的断点。在程序某一个地方设置断点,那么程序运行到此处就会暂停。

那么,watchpoint呢?

watchpoint是一种特殊的断点(所以,首先它还是断点)。在breakpoint的wiki中有相关描述:

http://en.wikipedia.org/wiki/Breakpoint

Other kinds of conditions can also be used, such asthe reading, writing, or modification of a specific location in an area of memory. This is often referred to as a conditional breakpoint, a data breakpoint, or a watchpoint.

即:当内存中一个指定的地址被读、写或者修改的时候就暂停的断点,通常称之为:条件断点或数据断点或观察点。

更多信息,可参考网络文章:

watchpoint在gdb中的实现原理

http://hi.baidu.com/zengzhaonong/blog/item/6bcbce133d78470d5baf537c.html

引用如下:

watchpoint可以看成是一种特殊的"断点", 其实现一般需要CPU支持硬件断点, 如果纯软件实现watchpoint, 那好像会很耗CPU.(我没去看gdb的软watchpoint的实现,有时间得去研究下,不过如果让我来实现这个功能,应该是设置watchpoint所在的那个页表为不可读/访问,然后在缺页处理那检测当前的页和地址是否是软设置watchpoint所在的页和watchpoint的地址,如果是,则说明可以假设该watchpoint发生了)
目前支持watchpoint硬件断点的arch有x86,ppc和mips。
如果支持硬件断点,那么可以将监控的操作交给硬件来完成,而gdb这边只要做个简单的逻辑处理就行。
Setting a data watchpoint
There are times when you want to monitor the values of specific variables or expressions in your source code when running an application. You can do this by setting watchpoints.
The following list shows the commands that are specific to data watchpoints.
awatch
Sets a watchpoint for a data symbol. The debugger stops the target when the memory isread or written.
rwatch
Sets a watchpoint for a data symbol. The debugger stops the target when the memory isread.
watch
Sets a watchpoint for a data symbol. The debugger stops the target when the memory iswritten.

————————————————————————————————————————————————————————————————————————————

DataBreakPoint的实现代码???

http://blog.csdn.net/ccanan/article/details/6018931

————————————————————————————————————————————————————————————————————————————

MSDN关于如何设置data breakpoint:

http://msdn.microsoft.com/en-us/library/350dyxd0(v=VS.90).aspx

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

DataBreakPoint

http://msinilo.pl/blog/?p=571http://www.codeproject.com/KB/debug/hardwarebreakpoint.aspx查冲内存的 错误时候,可...
  • ccanan
  • ccanan
  • 2010-11-18 14:58
  • 1500

Breakpoint, Watchpoint和Catchpoint

本文是《手把手教你玩转GDB》系列的第二篇,主要内容是用GDB调试程序中比较常用到的断点(breakpoint)、监视点(watchpoint)和捕捉点(catchpoint)。虽然说这三类point...

PMU性能分析系列1 - 相关概念

类似文章: http://blog.sina.com.cn/s/blog_6cfddec10100mck9.html http://bbs.lmtw.com/dispbbs.asp?boardid...

PMU性能分析系列1 - 相关事件的理解 - Basic Performance Tuning Events

以Intel(R) Microarchitecture Code Name Nehalem系列的CPU为例,以VTune工具作为测试手段来理解(因为我的CPU是这个系列的。) 基本的性能调优...

Linux下的系统性能调优工具——Perf

参考以下链接文章整理: Perf -- Linux下的系统性能调优工具,第 1 部分 Perf -- Linux下的系统性能调优工具,第 2 部分 感谢原作者,让我知道了性能调优也是如此有趣,L...

李海朝的留言簿

在C/C++代码中使用SSE等指令集的指令(1)介绍

我们知道,在C/C++代码中,可以插入汇编代码提高性能。现在的指令集有了很多的高级指令,如果我们希望使用这些高级指令来实现一些高效的算法,就可以在代码中嵌入汇编,使用SSE等高级指令,这是可行的,但是...

[转载]基于效率考虑,对Windows多线程同步机制的选择,分析与实测

链接:http://waterwood.blog.163.com/blog/static/43596554200793033955/ 声明:以下内容转载自新帆:nntp://news.newsfan...

在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试

下面是一个简单的测试SSE指令性能的程序,可以看到明显的性能提升。 (说明:程序中的timing.h使用的是http://blog.csdn.net/gengshenghong/article/de...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)