IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux gdb调试三(多线程) -> 正文阅读

[系统运维]Linux gdb调试三(多线程)

创作人QQ:851301776,邮箱:lfr890207@163.com
??????? 欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
???????? 1.没有横空出世,只要厚积一定发。
???????? 2.你可以学历不高,你可以不上学,但你不能不学习
?

一、代码

?


#include <pthread.h>
#include <stdio.h>
int i;

void *pthread_proc_1(void *arg)
{
    
    while(i<1000000)
    {
        i++;
        printf("%s %d\n", __func__, i);
        sleep(5);
    }


    return NULL;
}
void *pthread_proc_2(void *arg)
{
    
    while(i<1000000)
    {
        i++;
        printf("%s %d\n", __func__, i);
        sleep(5);
    }


    return NULL;
}
void *pthread_proc_3(void *arg)
{
    
    while(i<1000000)
    {
        i++;
        printf("%s %d\n", __func__, i);
        sleep(5);
    }


    return NULL;
}


int main(void)
{
    pthread_t thread1;
    pthread_create(&thread1, NULL, pthread_proc_1, NULL);
    pthread_t thread2;
    pthread_create(&thread2, NULL, pthread_proc_2, NULL);
    pthread_t thread3;
    pthread_create(&thread3, NULL, pthread_proc_3, NULL);


    sleep(500);
    return 0;
}

[点击并拖拽以移动]
?

代码不做分析

二、调试

????????主要目的熟悉多线程:

GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.? Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./a.out...done.

??????? (1)打断点在主函数中,断点必须是在创建线程完成后。

(gdb) b pthread_test.c:57
Breakpoint 1 at 0x400872: file pthread_test.c, line 57.
(gdb) r
Starting program: /home/mrlee/test/test/test/test/test/a.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff77ef700 (LWP 74724)]
pthread_proc_1 1
[New Thread 0x7ffff6fee700 (LWP 74725)]
pthread_proc_2 2
[New Thread 0x7ffff67ed700 (LWP 74726)]

Thread 1 "a.out" hit Breakpoint 1, main () at pthread_test.c:57
warning: Source file is more recent than executable.
57?? ???? sleep(500);

??????? (2)查看线程数量与我们代码是否相同

(gdb) info threads
? Id?? Target Id???????? Frame
* 1??? Thread 0x7ffff7fd0700 (LWP 74720) "a.out" main () at pthread_test.c:57
? 2??? Thread 0x7ffff77ef700 (LWP 74724) "a.out" 0x00007ffff78bc38d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
? 3??? Thread 0x7ffff6fee700 (LWP 74725) "a.out" 0x00007ffff78bc38d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
? 4??? Thread 0x7ffff67ed700 (LWP 74726) "a.out" clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:81

备注:*号表示现在对应的线程,前面的数字表示线程对应的id

??????? (3)进入对应线程

(gdb) thread 2
[Switching to thread 2 (Thread 0x7ffff77ef700 (LWP 74724))]
#0? 0x00007ffff78bc38d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
84?? ?../sysdeps/unix/syscall-template.S: 没有那个文件或目录.

??????? (4)锁定在此线程

(gdb) set scheduler-locking on
?

??????? (5)查看此线程运行状态

(gdb) c
Continuing.
pthread_proc_1 3
pthread_proc_1 4
set sch?? ?pthread_proc_1 5

??????? (6)解除线程锁定

(gdb) set scheduler-locking off
(gdb) c
Continuing.
pthread_proc_1 6
pthread_proc_3 7
pthread_proc_2 8

???????

????????

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 23:03:00  更:2022-03-10 23:04:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:37:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码