首页 > 其他分享 >gdb学习记录

gdb学习记录

时间:2024-08-26 14:14:50浏览次数:5  
标签:non set 记录 stop 学习 gdb TASK 线程

目录


如何查看地址值

查看下一个地址:x/x 0x12345679
以八进制显示:x/o 0x12345678
以十进制显示:x/d 0x12345678
显示更多的地址和值:x/8xw 0x12345678(显示从该地址开始的8个字(word),每个字以十六进制格式显示)
p /t __readfds->fds_bits[0] 二进制输出 /x 十六进制输出


查看当前函数参数

当程序在函数中暂停后,即可查看函数的参数。语法如下:

info args

或者

i args


多线程调试

线程状态可以是以下几种:

  • D:不可中断睡眠状态(Uninterruptible Sleep),通常是因为在等待I/O
  • R:正在运行或可运行(Running or Runnable),等待处理器调度
  • S:可中断睡眠状态(Interruptible Sleep),通常是在等待某个事件完成
  • T:已停止(Stopped),通常是由于收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号
  • t:跟踪停止(Traced Stop),在被调试器暂停时发生
  • Z:已僵尸(Zombie),已终止但未被其父进程清理
D (TASK_UNINTERRUPTIBLE) 	不可中断的睡眠状态
R (TASK_RUNNING)			正在运行,或在队列中的进程
S (TASK_INTERRUPTIBLE)		可中断的睡眠状态
T (TASK_STOPPED)			停止状态
t (TASK_TRACED)				被跟踪状态
Z (TASK_DEAD - EXIT_ZOMBIE) 退出状态,但没被父进程收尸,成为僵尸状态
W    						进入内存交换(从内核2.6开始无效)
X (TASK_DEAD - EXIT_DEAD)   退出状态,进程即将被销毁


<    高优先级
N    低优先级
L    有些页被锁进内存
s    包含子进程
+    位于前台的进程组;
l    多线程,克隆线程  multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

用 GDB 调试多线程程序_gdb多线程-CSDN博客

调试时除了当前线程在运行,要想规定其他线程的运行情况用这个命令,有三个选择:

  1. set scheduler-locking off:不锁定任何线程,所有线程都可以继续执行,这是默认选项。
  2. set scheduler-locking on:只有当前线程可以执行,其他线程暂停运行。
  3. set scheduler-locking step: 当单步执行某一线程时,其它线程不会执行,同时保证在调试过程中当前线程不会发生改变。但如果该模式下执行 continue、until、finish 命令,则其它线程也会执行,并且如果某一线程执行过程遇到断点,则 GDB 调试器会将该线程作为当前线程。

如果你想要对一个连续的线程ID范围内的所有线程应用命令,例如从线程ID 1到线程ID 10的所有线程

thread apply 1-10 command


只暂停指定线程,其他线程不影响

[gdb调试---多进程、线程]https://zhuanlan.zhihu.com/p/666440042
gdb调试多线程,默认采用all-stop模式,即只要有一个线程暂停执行,其他线程都会暂停。
有时调试其他线程,其他线程正常化执行,可以将all-stop模式改为non-stop模式,即暂停某一线程,不会影响其他线程
命令show non-stop查看当前的non-stop模式状态

(gdb) show non-stop
Controlling the inferior in non-stop mode is off.

命令set non-stop [mode]查看当前的non-stop模式状态

(gdb) set non-stop on
(gdb) show non-stop
Controlling the inferior in non-stop mode is on.

non-stop模式下,在指定线程设置断点,不会中断其他线程



总结

1 attach之前,set non-stop on
2 attach 进程id
3 set scheduler-locking on
4 thread apply all c &  恢复所有线程为运行态
5 开始给ctp动态库底层线程设置断点, b myselect thread 线程id
6 ctpApi_client触发ctp请求
7 gdb中ctp动态库底层线程触发断点,开始单步调试next

标签:non,set,记录,stop,学习,gdb,TASK,线程
From: https://www.cnblogs.com/yubo-guan/p/18380895

相关文章

  • Python学习-[numpy库]-初级
    创建数组:np.array([1,2,3,4,5])使用zeros创建全零数组:np.zeros((3,2))代表一个三行二列的数组:array([0.,0.], [0.,0.], [0.,0.])获取数组的尺寸:a=np.zeros((3,2))a.shape#输出结果为:(3,2)第一个数据展示数组第一维的长度,第二个数据展示数......
  • 【Pytorch教程】迅速入门Pytorch深度学习框架
    @目录前言1.tensor基础操作1.1tensor的dtype类型1.2创建tensor(建议写出参数名字)1.2.1空tensor(无用数据填充)API示例1.2.2全一tensor1.2.3全零tensor1.2.4随机值[0,1)的tensor1.2.5随机值为整数且规定上下限的tensorAPI示例1.2.6随机值均值0方差1的tensor1.2.7从列表或nump......
  • Python集成学习和随机森林算法使用详解
    概要集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(RandomForest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Python中如何......
  • 在深度学习程序中显示美观的进度条(史上最全的tqdm使用大全)
    tqdm用例大全下载tqdm库基础用法跟列表结合使用带提示的进度条自己设置进度条和自己定义更新自定义进度条处理单位动态显示损失值对于跑深度学习的人来说,如何更直观的观察训练进度和模型损失是十分重要的事。好的深度学习代码,在训练过程中能够直观的给人呈现出进度和......
  • 深度学习实用方法 - 性能度量篇
    序言在深度学习的广阔领域里,性能度量是连接理论与实践的桥梁,它不仅是评估模型效果的关键指标,也是指导模型优化与改进的重要依据。随着大数据时代的到来和计算能力的提升,深度学习模型在图像识别、自然语言处理、推荐系统等多个领域取得了突破性进展。然而,如何准确、全面地评......
  • 2024 Datawhale X 李宏毅苹果书 AI 夏令营第5期——跟李宏毅学深度学习(入门)
    本方向学习目标本方向的核心学习目标是——通过《深度学习详解》和李宏毅老师21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践(选修)。相关学习链接......
  • 阿里云ECS搭建hexo记录(带踩坑)
    前言之前因为coding的便捷,把个人博客部署在codingpage上,最近收到来自coding官方的短信,表示coding静态网站已经升级了,旧版即将在5月30日下线。新版的coding与腾讯云合并,部署page需要收费,想着反正也是要花钱,不如多花点心思和时间上手一个云服务器,选择自己部署网站,于是选择了阿里云......
  • Markdown学习(选做)
    一.已掌握1.基本语法(1)标题:使用#符号表示标题,#的数量表示标题的级别,最多支持六级标题。(2)段落:Markdown使用空行来分隔段落。(3)强调:使用*或_符号表示强调,一个符号表示斜体,两个符号表示加粗。例如:斜体加粗(4)列表:序号姓名年龄职业1张三30软件开发2......
  • C++学习随笔——简单的单例设计模式实例
    点击查看代码#include<iostream>classSingleton{private://私有化构造函数,防止外部实例化Singleton(){std::cout<<"SingletonInstanceCreated!"<<std::endl;}//删除拷贝构造函数和赋值运算符,防止拷贝实例Singleton(constSin......
  • Web API 学习笔记 第四弹
    1.时间戳获取时间戳的方法①date.getTime()②+newDate()2.定时器console.log(111)setTimeout(()=>{console.log(222)},1000)console.log(333)console.log(111)setTimeout(()=>{console.log(222)},0)console.log(333)这两段代码打印结果分......