首页 > 其他分享 >设置观察点

设置观察点

时间:2024-01-05 19:12:17浏览次数:26  
标签:func2 func1 thread int watch 观察点 设置

测试代码

#include <cstdint>
#include <thread>

int g_v = 0;

void thread_func1()
{
  for(int i  = 1; i < 100; ++i)
  {
    if(i % 4 == 0) ++g_v;
  }
}

void thread_func2()
{
  for(int i = 1; i < 100; ++i)
  {
    if(i % 2 == 0) g_v++;
  }
}


int main(int argc, char*argv[])
{
  std::thread t1(thread_func1);
  std::thread t2(thread_func2);
  t1.join();
  t2.join();
}

上面的代码,全局变量g_v在不同线程thread_func1和thread_func2进行修改,显而易见在thread_func1中i是4的倍数时g_v+1,在thread_func2中i是2的倍数是g_v+1,而在复杂的项目中当变量的值出现不在设计范围之内时,那么需要追踪变量值的变化过程,可以使用gdb watch命令来进行排查。

一、设置写观察点

  • watch a //追踪变量的a的值,当a发生改变时程序停下
    测试观察上面程序g_v的修改 watch 可以缩写为wa

  • 删除观察点或控制观察点
    info watch 打印所有观察点
    可以根据del 对应编号删除观察点 或 使用disable 和 enable 使观察点失效或生效

  • watch a thread id // 只指针特定线程id生效
    可以通过添加thread参数,来指定观察某一线程的修改变化。下面测试只在执行thread_func2线程进行观察g_v的变化。先通过 i thread 打印程序的线程信息获取thread编号,再通过编号设置观察点

二、读观察点和读写观察点

  • 读观察点, rwatch(缩写 rw) 命令来设置读观察点,当发生读取指定变量时,程序停下。
  • 读写观察点 awatch(缩写 aw) 命令来设置读写观察点,当变量发生读取和改变时,程序停下。
    以上俩个命令用法跟写观察点一致。

标签:func2,func1,thread,int,watch,观察点,设置
From: https://www.cnblogs.com/chen-pi/p/17947881

相关文章

  • el-table 设置合并行或列时,显示错乱问题
    1.需求效果图:2.接口数据格式:点击查看代码constlist=[{contractNo:"CAI-20220801001",contractItem:"用户质量指数",count:15234,customerItems:[{contractNo:null,contractItem:"反欺诈分......
  • Chrome浏览器的跨域设置(Window系统)
    注意:此方案仅适用于windows系统!!!做前后端分离的开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,而且chrome浏览器支持可跨域的设置,但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法不再适用了。一、开发使用习惯下载好谷歌浏览器以后,快捷方式复制两份放在......
  • 关于宝塔面板设置了域名访问后但是域名解析有问题导致原有的ip+端口无法访问的解决办
    前言:因为购买了腾讯云的vps,dnspod购买了一个域名,已经将搭建的博客和私有云均做了dns解析,突然想起宝塔也可以这样访问,但是解析出了点问题,默认无法通过域名直接解析服务器公网ip+端口想改好来但是域名和ip形式都已经无法访问,那则呢么办么,看操作  解决步骤:1、登录到vps服务器......
  • 如何使用CORS来允许设置Cookie
    要在Vue客户端和Node服务器端之间启用跨域资源共享(CORS)以允许设置Cookie,您需要在两个地方进行适当的配置。下面是一个示例:在Vue客户端中:安装axios库(如果还没有安装):npminstallaxios在您的Vue项目的主入口文件(如main.js)中添加以下代码:importaxiosfrom'axios';axios.def......
  • 【Azure APIM】APIM 策略语句如何来设置多个Cookie值让浏览器保存
    问题描述在APIM的 <return-response>策略中,设置Cookie值,因为需要设置多个Cookie值,使用下面两种方式都只能保存一个Cookie值:方式一:把多个cookie值用分号(;)拼接<return-response><set-statuscode="201"/><set-headername="Set-Cookie"exists-actio......
  • 一行代码解决:element admin 中动态设置快捷导航(标签栏导航)meta标签和title标签
    其实就是重置页面标签名称this.$store.dispatch('tagsView/updateVisitedView',Object.assign({},this.$route,{title:`${this.fileCode}`}))主页面跳转,传递需要参数<el-table-columnlabel="文件编号"align="center":show-overflow-tooltip="true"......
  • 无涯教程-Seaborn - 环境设置
    在本章中,无涯教程将讨论Seaborn的环境设置,从安装开始,在本节中,无涯教程将了解安装Seaborn所涉及的步骤。Pip安装要安装最新版本的Seaborn,可以使用pip-pipinstallseabornConda安装Anaconda(来自https://www.anaconda.com/是免费的Python发行版,用于SciPy堆栈,也可用于Linux......
  • 由于宏安全设置,无法找到宏或宏已被禁用。
    由于宏安全设置,无法找到宏或宏已被禁用。 首先,在“文件”菜单下打开“选项”。其次,在左侧找到并点击“信任中心”选项。接着,在右侧找到并点击“信任中心设置”按钮。然后,在打开的对话框的左侧,找到并点击“宏设置”选项。  ......
  • 无涯教程-jsoup - 设置属性
    下面的示例将HTML解析为Document对象后,使用addClass或removeClass方法来增加或删除class类方法。Documentdocument=Jsoup.parse(html);Elementlink=document.select("a").first();link.attr("href","www.yahoo.com");link.addClass("header"......
  • (02)IDE必要设置和优化设置
     然后重启IDE  背景色绿色 显示begin...end间的连线?  00]lazarus使用技巧01]安装IDE窗口合并包02如果没有自动打开Code窗口,手动打开步骤02如果没有自动打开Code窗口,手动打开步骤:这样,所有编辑窗口都打开了。03怎么增加begin...end间的连线?Tools-Options  ......