gdb 多线程和多进程调试

gdb调试多进程多线程 gdb是非常强大的UNIX及UNIX-like下的程序调试工具 gdb的使用: 在代码编译的时候加上-g选项 在命令行输入gdb+文件名 调试过程r或run:运行程序。 list/l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代码。 s或step:进入函数调用 breaktrace(或bt):查看各级函数调⽤用及参数 inf 阅读详情

多进程调试


  • info inferiors : 显示当前的多进程信息. 前面有 * 表示当前调试的进程

在这里插入图片描述


  • inferiors num : 指定当前调试的进程. num表示当前跳转到调试的进程番号.

    如果要调试子进程的话, 可以用 ps 命令查看在使用该命令执行指定进程的调试

在这里插入图片描述

  • set|show follow-fork-mode

    • show follow-fork-mode : 显示当前运行的模式 (先调试父进程还是子进程), 默认是调试父进程

在这里插入图片描述

-   `show follow-fork-mode` : 设置当前先调试的(子或父)进程.

  • set detach-on-fork on|off
    • on : 多个进程同时运行(默认). 而调试的进程默认以 show follow-fork-mode 决定.
    • off : 关闭多进程同时运行. 只有一个默认进程在调试中运行. 一般我们在多进程中就会设置该属性.

  • set follow-exec-mode new|same

    • new : 新建一个 inferior 给执行起来的子进程. 即子进程的编号将会改变

在这里插入图片描述

-   **same** : 子进程的编号不会发生改变

-   `show follow-exec-mode` : 可以通过该命令查看 `follow-exec-mode` 的模式.

多线程调试

  • info threads : 所有线程. * 表示当前调试的线程

    在这里插入图片描述


  • thread ID : 指定当前调试的线程号

在这里插入图片描述


  • set scheduler-locking off|on|step
    • off : 不锁定任何线程所有线程都执行(默认).
    • on : 只有当前被调试程序会执行, 其他线程全部暂停.
    • step : 单步调试中. 只有当前线程会执行.

输出问题

有时我们需要输出一个字符串的所有长度, 但是就如同下面一样, 只会输出一部分数据.

在这里插入图片描述


  • show print elements : 可以查看默认输出的字符个数, 一般默认是 200字符

    在这里插入图片描述

  • set print elements 0 : 设置无限制输出

    在这里插入图片描述

    在这里插入图片描述


小结

这里仅仅只是归纳了部分常用的调试命令, 有兴趣的还是去看看gdb文档吧.

gdb调试多进程和多线程 一、gdb调试多进程 多线程代码 2.默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode 和detach-on-fork 说明 <1>,设置方法: s 阅读详情

相关推荐

gdb调试多线程和多进程

gdb调试多线程和多进程一.多线程调试多进程调试 一.多线程调试 代码 1 #include <thread> 2 #include <vector> 3 #include <iostream> 4 #include <stdio.h> 5 #include <unistd.h> 6 #include <stdlib.h> 7 using namespace std; 8 9 int f1(int

kh815的博客 737

GDB调试多进程、多线程

. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。       follow-fork-mode  detach-on-fork   说明 parent

临渊羡鱼不如退而结网 1491

Linux——2、gdb调试多线程和多进程以及Core文件

啊

李骁睿写技术的地方 503

【gdb多线程调试笔记】如何在non-stop模式下停住特定线程(gdb filename启动方式)

1. 前言 还是由于最近毕设,需要修改实验室里某个有一定规模的分布式框架。由于动态调试真的很麻烦,这个半个月基本都在看代码和日志来分析程序。虽然经过了半个月,以现在对代码的熟悉程度,忽略gdb动态调试基本也问题不大。 但还是觉得很不舒服,很想在实际的多线程调试工作中,加入gdb这个熟手的工具。于是今天就挑战了一下,如何在non-stop模式下,把分解器工作线程给停住。现在还有一个头痛的问题,还没搞懂怎么去调试回调函数,因为gdb跟不进去。 2. gdb多线程的三种运行模式 假设有t1, t2, t3三个线程

Rachelint的博客 2260

多线程和多进程调试的艺术——使用gdb

本文详细介绍了使用gdb调试多线程和多进程程序的方法和技巧。首先,介绍了在多线程程序中如何查看和分析线程,以及使用gdb命令切换线程和查看调用堆栈。接着,阐述了如何在多线程调试中控制线程的执行流,通过scheduler-locking命令选项实现对当前线程的锁定,以及如何处理多进程程序,特别是Linux下使用fork创建的子进程的调试方法。

weixin_35886636的博客 350

银河麒麟(桌面版/服务器版)远程桌面配置全攻略:XRDP与VNC实战指南

本文提供了银河麒麟操作系统(桌面版与服务器版)配置远程桌面的完整实战指南。详细对比并演示了XRDP与VNC两种主流方案的安装、配置与连接步骤,涵盖从环境准备、软件安装、服务启动到客户端连接的全过程,并针对常见的黑屏、连接失败等问题给出了有效的排坑解决方案,帮助用户实现跨平台的便捷图形化远程管理。

b0c1d2的博客 808

gdb调试多进程程序的几个命令及调试示例

介绍了几个多进程调试命令。

qq_62761504的博客 470

FPGA实现高效数字下变频:CORDIC与CIC滤波器的Verilog优化设计

本文深入探讨了FPGA实现高效数字下变频的技术方案,重点介绍了CORDIC算法与CIC滤波器的Verilog优化设计。通过详细的算法原理分析、FPGA实现技巧和实战经验分享,展示了如何利用CORDIC的旋转运算替代乘法操作,以及CIC滤波器在降采样中的高效性能。文章还提供了完整的系统集成方案和资源优化策略,为无线通信和雷达信号处理领域的工程师提供了实用参考。

redis7keeper的博客 721

gdb调试 多线程情况下如何锁定当前线程,防止其他线程干扰

GDB> show scheduler-locking //显示线程的scheduler-locking状态 GDB> set scheduler-locking on //调试加锁当前线程,停止所有其他线程

qq_35975827的博客 5570

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1166

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7661

【GDB】GDB多线程查看线程堆栈|GDB 调试多线程和多进程总结

目录 GDB多线程查看崩溃时线程的堆栈 线程的查看以及利用gdb调试多线程 GDB 调试多线程和多进程总结 排除步骤 调试多进程 一、gdb的基础知识复习 二、使用gdb调试多进程 三,gdb 调试多线程 四、设置线程名字(便于分析) linuxGDB下动态链接库的调试 GDB设置线程锁(一个线程动其他不动) 作者:banda...

小鱼菜鸟的博客 4666

七天征服AutoSAR/SomeIP_04理解SoAD_LdCom_SD模块

本文深入解析了AUTOSAR平台下SOME/IP协议栈的架构设计与模块交互逻辑。重点剖析了SD模块(服务发现)和LdCom模块(通信适配层)与SoAD(Socket适配层)之间的复杂关联关系。文章通过详细配置表格和代码示例,阐述了服务注册发现机制、PDU路由控制策略、数据收发流程等核心功能,并形象地将三模块关系类比为"三极管结构"。特别强调了SD模块通过RoutingGroup实现通信路径的动态开关控制,以及LdCom模块在协议栈中的透传转发作用,帮助开发者理解配置规则背后的底层原理,提

大叔带刺的博客 194

【GDB】GDB 调试多线程和多进程总结

推荐看这个:https://blog.youkuaiyun.com/zhangye3017/article/details/80382496 排除步骤 1.ps -eo pid,lstart,cmd | grep proname找出进程的pid2.gdb attach pid。使用gdb attach可以调试正在运行的进程,这对数据不正常的程序很有效。3.inf...

小鱼菜鸟的博客 347

【即插即用模块】Transformer篇 | ICCV 2025 | MALA :注意力分布神似Softmax,告别线性注意力性能短板!

MALA(Magnitude-Aware Linear Attention)是一种改进的线性注意力机制,通过引入缩放因子和偏移项,解决了传统线性注意力忽视查询幅度的问题,使其分布更接近Softmax Attention。该模块具有线性复杂度(O(n)),结合RoPE和LEPE编码实现全局-局部位置信息混合,通过z值调制平衡信息权重。实验表明MALA在轻量级视觉任务中能有效平衡效率与精度,注意力可视化显示其分布与Softmax Attention高度相似。代码提供完整的RoPE位置编码和线性注意力

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1106

pb插入ole控件点击insert+control时自动关闭解决办法

也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。进行对出问题的控件反注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。,再进入注册表看到的是最正确的。来注册会莫名的冲突,但是用。

悠闲饭团的博客 710

GDB多进程和多线程的调试方法:简单

文章目录一、GDB调试多进程和多线程的必须知识一、GDB调试多线程1.gcc -g gbd.c -o my_debug -lpthread2.list [行号]3.info b4.r5.delete [断点号]6.n7.p [变量名]8.bt9.thread apply all bt,thread apply [编号…] [命令]10.info threads,thread+线程编号11.set ...

喜欢打篮球的普通人 1520

YOLO车辆测距、车辆识别与单目测距

YOLO(You Only Look Once)是一种实时物体检测系统,能够识别视频或图像中的多个对象,并确定其位置。结合车辆识别与单目测距技术,YOLO可以用于交通监控、自动驾驶等应用场景,通过单个摄像头实现车辆的识别与距离测量。YOLO结合单目测距技术,在多个应用领域展现出巨大的潜力与灵活性。其实时性和准确性为智能交通、自动驾驶等领域提供了强有力的技术支持。

走向CTO的路上... 1667

GDB调试多进程和多线程(进阶版)

环境 系统:CentOs 7.4版本 编译器:gcc 4.8.5版本 debug:gdb 7.6.1版本 文本编辑器:VScode or VIM 准备工作 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-...

wh_computers的博客 2934

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Linux】GDB调试多线程和多进程以及Core文件

GDB调试器 基本概念 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 主要功能     1、启动程序,可以按照你的自定义的要求随心所欲的运行程序。

皓皓松的博客 3695

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

GDB调试多进程和多线程

GDB调试单进程 参数列表 命令 命令缩写 命令说明 list l 显示多行源代码 break b 设置断点,程序运行到断点的位置会停下来 info i ...

wk_bjut_edu_cn的博客 635

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

gdb调试多进程和多线程命令

gdb调试多进程和多线程命令 标签: 多线程threaddebuggingnullcentosfile 2012-08-17 12:27 19907人阅读 评论(2) 收藏 举报  分类: linux(59)  版权声明:本文为博主原创文章,未经博主允许不得转载。 1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.

jfkidear的专栏 782

用gdb调试多进程和多线程的服务器程序

转自:http://bbs.chinaunix.net/viewthread.php?tid=1609486&page=3&authorid=207013291楼发表于 2009-11-06 15:17 | 显示全部帖子<br /> 刚好这几天用gdb调试多进程和多线程的服务器程序,以往对于这类程序也都是打日志加core文件的方法,<br />但逻辑过于复杂的时候,屡次增加日志终是不爽,对于一般的服务器程序去掉编译优化选项gdb跟踪还是很好的,<br />对于多进程和多线程的daemon后台程序, set

Nicholas的专栏 QQ1295794532 6467

【转】Linux多进程和多线程的一次gdb调试实例

转自:https://typecodes.com/cseries/multilprocessthreadgdb.html Linux C/C++开发中gdb进行多进程和多线程的调试一直比较麻烦,在优快云上看到高科的一篇文章《gdb调试多进程和多线程命令》比较有启发,这里就自己重新整理并做了一个GDB多进程/线程的调试实践。 1 原文整理 默认设置下,在调试多进程程序时gdb只会调试主进程。...

勤学如春起之苗,不见其增,日有所长! 辍学如磨刀之石,不见其损,日有所亏! 321
上一篇: 53. 线程池
下一篇: 0. 网络编程目录
Function_18
博客等级 码龄10年 193粉丝 239原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值