首页 > 其他分享 >GDB调试之观察点的使用(九)

GDB调试之观察点的使用(九)

时间:2024-01-14 19:46:34浏览次数:32  
标签:std temp int 观察点 GDB include 断点 调试

一、什么是观察点?

观察点是一个特殊的断点,当表达式的值发生变化时,它将中断下来。表达式可以是一个变量的值,也可以包含由运算符组合的一个或多个变量的值,例如'a+b'。有时被称为数据断点(VC里面就称之为数据断点)。

二、观察点常用命令

  • watch:写观察点
  • rwatch:读观察点
  • awtach:读写断点
  • info watch:查看观察点
  • delete/disable/enable:删除/禁用/启用观察点

调试代码下载地址

测试代码示例:

#include <iostream>
#include <cstring>
#include <thread>
using namespace std;
int gdata = 0;
int gdata2 = 0;
void test_thread(void *data)
{
	int *temp = (int*)data;
	std::this_thread::sleep_for(std::chrono::seconds(*temp));
	gdata = *temp;
	gdata2 = 2 * (*temp);
	cout << "thread data:" << gdata << endl;
	cout << "test thread exited" << endl;
}
int main(int argc,char** argv)
{
	int data=3;
	thread t1(&test_thread,(void*)&data);
	int data2=5;
	thread t2(&test_thread,(void*)&data2);
	t1.join();
	t2.join();
	cout << "threads exit" << endl;
	return 0;
}

写观察点命令watch的使用:

为指定线程设置写观察点:

为两个变量之和大于10设置写观察点:

读观察点命令rwatch的使用:

读写观察点命令awtach的使用:

标签:std,temp,int,观察点,GDB,include,断点,调试
From: https://www.cnblogs.com/TechNomad/p/17964069

相关文章

  • GDB调试之函数调用栈管理(八)
    栈帧:当程序进行函数调用的时候,比如说在哪里调用,这些信息我们称之为栈帧。每一个栈帧的内容包括调用的参数,局部变量,寄存器等这些信息,这就是一个栈帧。调用栈:所有栈帧组成的信息称之为调用栈,或者我们也可以称之为调用堆栈。栈的特性是后进先出,函数调用也是这样,如果函数1里面调用了......
  • 05_OLED调试工具
    OLED调试工具OLED简介调试方式硬件电路OLED驱动函数OLED接线图OLED代码OLED.c#include"stm32f10x.h"#include"OLED_Font.h"/*引脚配置*/#defineOLED_W_SCL(x) GPIO_WriteBit(GPIOB,GPIO_Pin_8,(BitAction)(x))#defineOLED_W_SDA(x) GPIO_WriteBit(GPIOB......
  • 如何让Visual Studio Tools for Unity插件用于调试你自己的Mono嵌入应用程序
       最近在测试将mono嵌入到C++应用程序中,苦于没有调试器,有时候还是不怎么方便。网上搜了一下,有VS插件MDebug、VSMonoDebugger,实际试用了一下,有点麻烦,而且似乎对Windows+VisualStudio2022支持不大好。因此想到了,Unity引擎是基于mono的,VisualStudio2022也内置了针对Unity的......
  • GDB调试程序 [补档-2023-07-19]
    gdb调试​它是gcc的调试工具,调试工具都能干什么就不多说了。7-1生成调试信息​在使用gcc编译c/c++的程序时,需要在编译命令中加入-g这一参数,它可以为你显示函数名,变量名等待。例如:gcc-gtest.c-otest​7-2启动gdb调试信息​启动指令:gdb可执行程序......
  • GDB调试之源代码查看与管理(六)
    一、源代码管理命令显示源代码:listorl,默认显示10行(在当前行往后5行,以及往前5行,总共10行代码)设置每次显示的行数:setlistsizexx查看指定函数代码:listtest_fun查看指定文件指定行代码:listmain.cpp:15显示源代码:查看指定函数代码:查看指定文件指定行代码:设置每次......
  • 函数计算域名调试web应用
    函数计算域名调试web应用如果没有域名的话,可以利用一个小技巧来绕过阿里云对于函数计算域名使用的限制,从而直接使用阿里云的域名进行访问先进入如下页面复制公网访问地址​​然后安装可以修改响应头的浏览器插件,例如https://github.com/FirefoxBar/HeaderEditor,然后进行类......
  • 聊一聊 .NET高级调试 中必知的符号表
    一:背景1.讲故事在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据类型是什么等等,目的就是辅助我们可视化的调试,如果没有这些辅助我们看到的都是一些无意义的......
  • 聊一聊 .NET高级调试 中的一些内存术语
    一:背景1.讲故事在高级调试的旅程中,经常会有一些朋友问我什么是工作集(内存),什么是提交大小,什么是VirtualSize,什么是WorkingSet。。。截图如下:既然有很多朋友问,这些用口头也不怎么好描述,刚好上午有时间就系统的聊一下吧。二:内存术语解读1.VirtualSize是什么可能有些朋......
  • GDB调试之寄存器查看与修改(六)
    一、寄存器查看命令命令:"iregister"查看所有的寄存器,如果只想查看指定的寄存器,则使用"ir寄存器名称",如"irrdi",寄存器的名称列表如下所示:函数参数低于六个的时候,会把参数放在寄存器中,当函数参数高于六个参数的时候,就不会把参数放在寄存器中,而是放在函数栈中。调试代码如下......
  • 如何使用谷歌浏览器 Chrome 更好地调试
    你的JavaScript是否曾经无法正确执行,并且你很难找出原因?你的CSS是否曾经表现得很奇怪,并且你很难找出原因或让它按预期显示?调试是编程的基本组成部分,也是所有软件开发人员的基本技能。当你构建网站和应用程序时,你很快就会意识到调试会占用大量时间。因此,学习任何可以帮助你更......