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

手把手教你玩转GDB(二)—Breakpoint, Watchpoint和Catchpoint

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

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

vs2008无法设置数据断点(Data Breakpoint)的解决方法 分类: C&C++ 2013-03-14 22:10 562人阅读 评论(0) 收藏 举报 ...

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

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

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

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

OD common breakpoint collection

  • 2013年06月12日 04:24
  • 5KB
  • 下载

iOS - GDB & Breakpoint 调试:

EXC_BAD_ACCES   NSZombieEnabled    YES 1.Xcode菜单 Product  =>  Scheme  =>  Edit Scheme =》 R  里面选择...

User breakpoint called from code at 0x7c92120e .

在分配内存时用到了new[ ],而在释放内存时却用的是delete,虽然程序执行没有什么大问题,只是在调试的时候总是跳出一些断点(这些个断点我没有设置),显示的内容都是:User breakpoint...

iOS 调试 crash breakpoint EXC_BAD_ACCESS SIGABRT方法总结

在调试程序的时候,总会遇到一些奔溃的bug,而且追踪结果往往是一些汇编的代码,让人无从下手。 今天我们介绍通过增加断点来解决此问题的方法 如下: 基本上有错误分为以下几种类型: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:breakpoint和watchpoint/data breakpoint
举报原因:
原因补充:

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