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

【gdb】设置观察点

时间:2023-10-15 15:56:33浏览次数:29  
标签:__ int 0x0 st 观察点 gdb mutex 设置

设置观察点

1. 例子:

#include <stdio.h>
#include <pthread.h>

typedef struct
{
  int a;
  int b;
  int c;
  int d;
  pthread_mutex_t mutex;
} ex_st;

int main(void)
{
  ex_st st = {1, 2, 3, 4, PTHREAD_MUTEX_INITIALIZER};
  printf("%d,%d,%d,%d\n", st.a, st.b, st.c, st.d);
  return 0;
}

默认情况下,gdb以一种“紧凑”的方式打印结构体。以上面代码为例:

(gdb) n
16	  printf("%d,%d,%d,%d\n", st.a, st.b, st.c, st.d);
(gdb) p st
$1 = {a = 1, b = 2, c = 3, d = 4, mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, 
      __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}}

可以看到结构体的显示很混乱,尤其是结构体里还嵌套着其它结构体时。可以执行“set print pretty on”命令,这样每行只会显示结构体的一名成员,而且还会根据成员的定义层次进行缩进:

(gdb) set print pretty on
(gdb) p st
$2 = {
  a = 1, 
  b = 2, 
  c = 3, 
  d = 4, 
  mutex = {
    __data = {
      __lock = 0, 
      __count = 0, 
      __owner = 0, 
      __nusers = 0, 
      __kind = 0, 
      __spins = 0, 
      __elision = 0, 
      __list = {
        __prev = 0x0, 
        __next = 0x0
      }
    }, 
    __size = '\000' <repeats 39 times>, 
    __align = 0
  }
}

 

标签:__,int,0x0,st,观察点,gdb,mutex,设置
From: https://www.cnblogs.com/sunbines/p/17765697.html

相关文章

  • 设置Debian系统的root登陆的方法
    设置Debian系统的root登陆的方法kyyxxk于2023-05-1510:05:48发布阅读量1.2k 收藏 2点赞数1文章标签: debian linux 运维版权Debian桌面环境默认不允许root登录,所以需要修改配置。一、让Debian可以使用root登录1)首先修改gdm3的设定文件(/etc/gdm3/dae......
  • Win11系统如何设置电脑睡眠唤醒时需要输入密码?
       ......
  • 【gdb】run和start区别
    run和start区别gdb调试器提供了多种方式来启动目标程序,其中最常用的就是run指令,其次为start指令。也就是说,run和start指令都可以用来在gdb调试器中启动程序,它们之间的区别是:1、默认情况下,run指令会一直执行程序,直到执行结束。如果程序中手动设置有断点,则run指令会执行......
  • 自动批量将阿里云盘资源发布成WordPress文章带截图Python脚本(含正文 付费信息 下载地
    自动批量将阿里云盘资源发布成WordPress文章带截图Python脚本(含正文付费信息下载地址SEO等自动设置)自动批量将阿里云盘资源发布成WordPress文章带截图Python脚本(含正文付费信息下载地址SEO等自动设置)源码下载自动上传图片至WordPress站点,使用RestFulAPI批量发布文章,文章含......
  • 【gdb】断点管理
    断点管理命令说明:命令说明breakb断点命令break函数名为函数设置断点break代码函数为某一行设置断点break类名:函数名在某个类的函数设置断点break文件名:函数名在文件名指定某个函数设置断点break文件名:行数在文件名执行的代码行设置断点br......
  • 【gdb】向上或向下切换函数堆栈帧
    向上或向下切换函数堆栈帧1.例子:#include<stdio.h>intfunc1(inta){return2*a;}intfunc2(inta){intc=0;c=2*func1(a);returnc;}intfunc3(inta){intc=0;c=2*func2(a);retur......
  • 远程控制:TeamViewer设置无人值守
    远程控制:TeamViewer无人值守 一、安装TeamViewer1.安装二、设置TeamViewer无人值守1.打开TeamViewer2.选择【其他】-【选项】 3.选择【常规】4.[√]勾选【随Windows一同启动TeamViewer】设置一个密码(必须),用于密码连接时使用 5.点击【分配至账户】6.输入【......
  • ubuntu18.04环境下编译支持debuginfod的gdb
    ubuntu18.04环境下编译支持debuginfod的gdb介绍Ubuntu22.10版本才默认安装debuginfod,对于之前的发行版都需要手动配置。gdb从10.1版本才开始支持debuginfod,而Ubuntu旧的发行版里gdb都低于10.1版本。另外,debuginfod被包含在elfutils里面,且从elfutils-0.178版本后才支持,而Ubuntu......
  • 设置不同区域编辑权限
    问题:为不同区域设置不同权限解决:审阅》允许编辑区域》新建》设置区域与密码》重复新建多个区域》保护工作表......
  • SQLite 设置自增列、重置自增列
    SQLite设置自增列、重置自增列创建表设置主键自增CREATETABLE[tCeShi]([ID]INTEGERPRIMARYKEYAUTOINCREMENT,[Name]TEXT(50),[Amount]REAL);插入数据主键位置写成NULLinsertintotCeShivalues(NULL,'商品A',10);或不插入主键insertintotCeShi......