gdb调试

简介: gdb调试

gdb调试多线程

通过如下程序实例查看和gdb调试多线程:

#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>
void* pthread_run1(void* arg)
{
    (void)arg;
    while(1)
    {
        printf("I am thread1,ID: %d\n",pthread_self());
        sleep(1);
    }
}
void* pthread_run2(void* arg)
{
    (void)arg;
    while(1)
    {
        printf("I am thread2,ID: %d\n",pthread_self());
        sleep(1);
    }
}
int main()
{
    pthread_t tid1;
    pthread_t tid2;
    pthread_create(&tid1,NULL,pthread_run1,NULL);
    pthread_create(&tid2,NULL,pthread_run2,NULL);
    printf("I am main thread\n");
    pthread_join(tid1,NULL);
    pthread_join(tid2,NULL);
    return 0;
}

分析如下:

//查看当前运行的进程

ps aux|grep a.out

//查看当前运行的轻量级进程

ps -aL|grep a.out

//查看主线程和新线程的关系

pstree -p 主线程id

线程栈查看

gdb调试多进程

1、将进程附加到gdb调试器当中,查看是否创建了新线程:gdb attach 主线程ID

//1.查看进程:info inferiors

//2.查看线程:info threads

//3.查看线程栈结构:bt

//4.切换线程:thread n(n代表第几个线程)

当程序没有启动,线程还没有执行,此时利用gdb调试多线程和调试普通程序一样,通过设置断点,运行,查看信息等等;

//1. 设置断点:break 行号/函数名

//2. 查看断点:info b

1. 继续使某一线程运行:thread apply 1-n(第几个线程) n

2. 重新启动程序运行到断点处:r

// 1. 设置:set scheduler-locking on

//   2. 运行:n

   //1. 设置:set scheduler-locking off

 //  2. 运行:n

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
1月前
|
NoSQL 搜索推荐 openCL
【C/C++ 调试 GDB指南 】gdb调试基本操作
【C/C++ 调试 GDB指南 】gdb调试基本操作
59 2
|
3月前
|
NoSQL Linux 开发工具
【深入解析git和gdb:版本控制与调试利器的终极指南】(下)
【深入解析git和gdb:版本控制与调试利器的终极指南】
|
3月前
|
NoSQL 小程序 C语言
GDB调试学习(四):段错误
GDB调试学习(四):段错误
39 0
|
3月前
|
NoSQL
GDB调试学习(三):观察点
GDB调试学习(三):观察点
38 0
|
3月前
|
NoSQL
GDB调试学习(二):断点
GDB调试学习(二):断点
37 0
|
4月前
|
NoSQL Linux 程序员
Linux | 调试器GDB的详细教程【纯命令行调试】-1
Linux | 调试器GDB的详细教程【纯命令行调试】
270 0
|
2天前
|
NoSQL Ubuntu 测试技术
【GDB自定义指令】core analyzer结合gdb的调试及自定义gdb指令详情
【GDB自定义指令】core analyzer结合gdb的调试及自定义gdb指令详情
7 1
|
1月前
|
NoSQL C++ 开发者
【C/C++ 调试 GDB指南 】GDB中的‘info’命令:一次全面的探索
【C/C++ 调试 GDB指南 】GDB中的‘info’命令:一次全面的探索
40 0
|
1月前
|
NoSQL 算法 Shell
【C/C++ 调试 GDB指南 】详解 gdb 断点的设置方式
【C/C++ 调试 GDB指南 】详解 gdb 断点的设置方式
19 2
|
3月前
|
NoSQL Unix 开发工具
【深入解析git和gdb:版本控制与调试利器的终极指南】(上)
【深入解析git和gdb:版本控制与调试利器的终极指南】