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

vs2008无法设置数据断点(Data Breakpoint)的解决方法

项目中的工程在使用过程中突然就无法设置数据断点了(New Data Breakpoint灰掉了),如下图所示:这个问题困扰项目组好长时间,要知道无法设置内存断点的痛苦。造成这个问题的原因是由于工程中使...
  • rabbit729
  • rabbit729
  • 2013-03-14 22:10:44
  • 4669

VS2005 VS2010数据断点不能设置的原因 new data breakpoint is disabled

数据断点是VS的一项犀利功能,尤其在我司这种代码量巨大的大型系统中,想知道一个被很多地方访问的类的变量是在什么时候被改变的是一件很困难的事情,使用数据断点能极大提高debug的效率。可昨天突然遇到了数...
  • happyever2012
  • happyever2012
  • 2015-03-19 08:40:16
  • 745

详解Visual Studio调试中断点几个的小技巧

断点对于Visual Studio调试过程是十分重要的,断点的设置也是为了更好的进行调试。本文将介绍Visual Studio调试中断点几个的小技巧。 一般来说,函数断点在下面几种情形下有用: ...
  • qing101hua
  • qing101hua
  • 2016-07-25 11:19:17
  • 2162

watchpoint和breakpoint

watchpoint和breakpoint看起来很像,但是它们暂停运行的原因却不同。你设置了一个watchpoint,就表明你告诉IDE你希望监视一块内存。当被监视的内存的内容发生变化时,watchp...
  • nolatin
  • nolatin
  • 2010-07-24 09:54:00
  • 6620

Breakpoint, Watchpoint和Catchpoint

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

gdb里的软件观察点 (software watchpoint) 和硬件观察点 (hardware watchpoint)区别

(以下分析的作者是www.linuxsir.org中的herberteuler大侠) 使用   GDB   调试程序时,你可以添加两种类型的观察点:软件观察点   (software   watchp...
  • geekster
  • geekster
  • 2011-07-28 15:05:38
  • 3184

breakpoint和watchpoint/data breakpoint

breakpoint很容易理解,是程序的断点。在程序某一个地方设置断点,那么程序运行到此处就会暂停。 那么,watchpoint呢? watchpoint是一种特殊的断点(所以,首先它还是断点)。...
  • gengshenghong
  • gengshenghong
  • 2012-03-28 19:46:08
  • 2781

vs2008无法设置数据断点(Data Breakpoint)的解决方法

2013-03-14 22:10896人阅读评论(0)收藏举报   项目中的工程在使用过程中突然就无法设置数据断点了(New Data Breakpoint灰掉了),如下图所示: 这个问题...
  • u013758961
  • u013758961
  • 2014-06-05 10:26:03
  • 299

DataBreakPoint

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

gdb 系列(1) (hwbreakpoint\watchpoint)

1. 软硬件环境android 7.0(n) QCOM 骁龙8202. 背景我最初是因为要做一件类似这样的事情的时候才研究这个的 art debug过程中我们发现 经常有SIGSEGV的问题,而...
  • green369258
  • green369258
  • 2017-02-18 20:43:34
  • 973
收藏助手
不良信息举报
您举报文章:breakpoint和watchpoint/data breakpoint
举报原因:
原因补充:

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