[转]GDB-----2.watchpoint】的更多相关文章

TODO需要在ARM下验证 1. 前言 watchpoint,顾名思义,其一般用来观察某个变量/内存地址的状态(也可以是表达式),如可以监控该变量/内存值是否被程序读/写情况. 在gdb中可通过下面的几种方法来设置watchpoint: (gdb) watch 在指定变量/内存地址(表达式)expr设置一个watchpoint. 一但expr值有变化时,将停住程序. (gdb) rwatch 当expr被读时,停住程序. (gdb) awatch 当expr被读或被写时,停住程序. (gdb)…
加入你正在使用GDB7.0以上版本的调试器并且运行在支持反向调试的平台,你就可以用以下几条命令来调试程序: reverse-continue 反向运行程序知道遇到一个能使程序中断的事件(比如断点,观察点,异常). reverse-step 反向运行程序到上一次被执行的源代码行. reverse-stepi 反向运行程序到上一条机器指令 reverse-next 反向运行到上一次被执行的源代码行,但是不进入函数. reverse-nexti 反向运行到上一条机器指令,除非这条指令用来返回一个函数调…
注意: 这里是讲gdb的高级技巧.如果没有接触过gdb,请看这篇:点这里. gdb是一个功能极其强大的命令行调试器.其实,除了我们常用的 file b s n q disp p 等命令,也有很多高级技巧.虽然有的功能是为系统级调试提供的,但还是有方便之处. 接下来,我将介绍一些高级技巧,希望可以帮助大家. (温馨提醒:多用help命令!请提前用 -g 参数编译) GDB版本:9.1:系统版本:Arch Linux 245-1 示例代码:(以下示例均以此代码为准) #include <iostre…
Breakpoint : 设置断点比较直接,在某处停止 Watchpoint : 观察点,即某个变量/表达式发生变化时,停止.可扩展为变量被读/被写/被读or写时都停止 Catchpoint : 在发生某种时间时停止,比如异常,或者加载动态库时,fork发生时,系统调用发生时,等等,此时停止…
一 单步执行和跟踪函数调用 先给出一段代码,可以用下面介绍的例子. #include <stdio.h> int add_range(int low, int high) { int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum; } int main(void) { ]; result[] = add_range(, ); result[] = add_range(, ); printf(], resul…
第一部分牛刀小试:启动GDB开始调试 1.       编译带调试信息的可执行程序:用gcc(g++)编译的时候带上-g选项即可 2.       启动GDB开始调试 (1)gdb program       ///最常用的用gdb启动程序,开始调试的方式 (2)gdb program core   ///用gdb查看core dump文件,跟踪程序core的原因 (3)gdb program pid    ///用gdb调试已经开始运行的程序,指定pid即可 3.       应用程序带命令行…
gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程. 注意gdb的版本要高于7.0,之前使用过gdb6.3调试多线程是不行的. 从上图可以看出两个线程都阻塞在wait上,而且还给出了在哪一行代码中,很容易就定位到产生死锁的位置. 有时候线程太多,想写到文件里,可以: (gdb)set logging file <文件名> (gdb)set logging on (gdb)…
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓“寸有所长,尺有所短”就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能:     A.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.    B.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式)    C.当程序…
用GDB调试程序GDB概述 2使用GDB 5GDB中运行UNIX的shell程序 8在GDB中运行程序 8调试已运行的程序 两种方法: 9暂停 / 恢复程序运行 9一.设置断点(BreakPoint) 9二.设置观察点(WatchPoint) 10三.设置捕捉点(CatchPoint) 10四.维护停止点 11五.停止条件维护 12六.为停止点设定运行命令 12七.断点菜单 13八.恢复程序运行和单步调试 13九.信号(Signals) 14十.线程(Thread Stops) 15查看栈信息…
调试已运行的程序 在UNIX下用ps查看正在运行的程序的PID(进程ID),然后用gdb PID格式挂接正在运行的程序. 先用gdb 关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID.并用detach来取消挂接的进程. 暂停 / 恢复程序运行 调试程序中,暂停程序运行是必须的,GDB可以方便地暂停程序的运行.你可以设置程序的在哪行停住,在什么条件下停住,在收到什么信号时停往等等.以便于你查看运行时的变量,以及运行时的流程. 当进程被gdb停住时,你可以使用info pr…