Linux下多进程的调试

Linux - 使用gdb调试多进程程序 gdb是Linux下一款调试器,常用来调试c/c++代码。对于多进程的程序,gdb是如何进行调试的呢?我们接下来一起学习:方法一:attach pid 利用该命令attach到子进程然后进行调试。为方便调试,可以sleep,这样有充分的时间进行调试。 方法二:gdb wrapper 专用于fork+exec模式,不用添加额外代码,但需要X环境支持(xterm/VNC)。 方法三:follow 阅读详情

Linux下多进程的调试:

(1)follow-fork-mode

set follow-fork-mode [parent | child] ———— fork之后选择调试父进程还是子进程

(parent: fork之后继续调试父进程;child: fork之后调试父进程。默认的是fork之后调试父进程)

set detach-on-fork [on | off] ———— 指示gdb在fork之后是否断开某个进程的调试,或交由gdb控制

(on: 断开调试follow-fork-mode指定的进程;off: gdb将控制父进程和子进程,follow-fork-mode指定的进程将被调试,另一个进程置于暂停状态)

(2)attach pid

Ubuntu下gdb要使用attach pid权限是不够的,需要切换到root,或者你可以sudo chmod +s /usr/bin/gdb给gdb添加权限。

使用attach需要在父子进程代码最开始添加sleep()语句,让进程睡眠,之后在后台运行进程,通过ps获取子进程pid,最后attach pid进入调试子进程。

eg:

$./test &            //使进程test在后台运行

$ps -ef | grep test        //查看进程pid

结果中类似下面的形式:

XXX 12345 23456 ———————————————— ./test        //父进程

XXX 12346 12345 ———————————————— ./test        //子进程,这里的第一个数字就是子进程pid

$ gdb -q test

(gdb)attach 12346        //attach到子进程

添加的sleep()可以是类似这样的语句:

while(pause)        //pause是一个标志变量

sleep(1);

在gdb调试时你只需要set pause=0使条件不满足即可执行后续代码。

(3)gdb wrapper

当父进程fork出子进程,子进程会紧接着调用exec函数来执行新的代码,这时也可以用gdb wrapper。它的优点是不用添加额外代码。

Linux下将一个进程放到后台运行:

(1)./test &

(2)"./test" 之后按下 "ctrl+z" , 用"bg %num"返回的数字将该进程放到后台;

Linux下将进程拉回前台:

用"fg %num"

GDB调试程序用法 http://www.linuxidc.com/Linux/2013-06/86044.htm

GDB+GDBserver无源码调试Android 动态链接库的技巧 http://www.linuxidc.com/Linux/2013-06/85936.htm

使用hello-gl2建立ndk-GDB环境(有源码和无源码调试环境) http://www.linuxidc.com/Linux/2013-06/85935.htm

在Ubuntu上用GDB调试printf源码 http://www.linuxidc.com/Linux/2013-03/80346.htm

Linux下用GDB调试可加载模块 http://www.linuxidc.com/Linux/2013-01/77969.htm

Ubuntu下使用GDB断点Go程序 http://www.linuxidc.com/Linux/2012-06/62941.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/104993.htm

Linux下多进程多线程的调试 1. Linux下GDB调试常用命令   在调试前明确:在生成源代码的时候加上 -g 选项,开始使用: gdb binFile,退出: ctrl + d 或 quit。下面是调试的常用命令。   list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。   list/l 函数名:列出某个函数的源代码。   r或run:运行程序。   s或step:进行函数调用 阅读详情

相关推荐

【DeepSeek+Office/WPS】智能办公新时代的全新利器

DeepSeek是一家专注于通用人工智能技术研发的中国科技公司,其核心产品DeepSeek-R1是一款开源的推理大模型,专注于复杂任务的高效处理,支持智能对话、文本生成、语义理解、计算推理、代码生成与补全等多种应用场景。作为国产、免费、开源且强大的AI平台,DeepSeek不仅致力于为终端用户提供高质量的智能服务,还为开发者提供了一整套完善的技术解决方案,帮助他们快速构建和部署自己的智能应用。

2303_77200324的博客 2791

k8s灰度更新_k8s slb如何实现灰度发布-问答-阿里云开发者社区-阿里云

首先需要制作此次实验的基础镜像: 1. Dockerfile的编写:   mkdir dockerfile && cd dockerfile   vim Dockerfile    #注意: Dockerfile的文件名首字母要大写     FROM alpine:latestMAINTAINER "ZCF zcf@zczf.com"ENV NGX_DOC_ROOT="/var/l...

weixin_39980893的博客 521

告别连接难题:Windows 11下Multisim主数据库稳定运行终极配置指南

本文详细解析了Windows 11下Multisim 14.0主数据库连接失败的三大根源,并提供了四步终极解决方案,包括系统环境优化、软件权限配置、注册表修复和网络验证绕过技巧。通过实测数据对比,本方案显著提升了启动速度和稳定性,解决了电子仿真中的常见连接问题。

weixin_33738555的博客 432

linux中多进程调试,linux如何调试多进程程序

在Linux系统操作中,经常会遇到多进程调试的问题,其实多进程的调试没有想象中的那么复杂,下面小编就给大家介绍下Linux如何调试多进程程序,感兴趣的朋友不妨来了解下。多进程的调试:(1)follow-fork-modeset follow-fork-mode [parent | child] ———— fork之后选择调试父进程还是子进程(parent: fork之后继续调试父进程;child:...

weixin_33469623的博客 491

告别CNN局限:用Transformer+迁移学习搞定高光谱图像分类(附Pytorch代码)

本文探讨了如何利用Transformer的自注意力机制和迁移学习策略解决高光谱图像分类中的挑战。通过结合CNN的局部特征提取和Transformer的全局建模能力,提出的DenseTransformer架构在多个数据集上实现了显著的性能提升。文章还提供了详细的PyTorch实现代码和工程优化技巧,帮助开发者快速应用这一技术。

weixin_32771907的博客 605

Windows10系统添加虚拟网卡(Microsoft Loopback Adapter)的方法

1、按下win + R键,在其中输入:hdwwiz,然后 (enter) 2、点击下一步即可 3、其次选择【网络适配器】,然后点击【下一步】。 4、在厂商处选择Microsoft,网络适配器处选择【Microsoft Loopback Adapter】选项 ,点击【下一步】。 5、通过上面几个步骤的设置后,一块虚拟网卡的安装设置就算是完成了。 ...

一个懒鬼的博客 2万+

GDB多进程调试

在使用GDB(GNU Debugger)进行多进程调试时,你可以使用几种不同的方法来管理和调试多个进程。

dc爱傲雪和技术 1466

TI IWR 6843 ISK 毫米波雷达开箱测试

TI IWR6843 ISK毫米波雷达上手体验,教程十分详细,对于新手很友好。

qq_57061492的博客 4033

【Linux】gdb 调试C/C++程序 调试core文件 多线程 多进程程序

gdb的基本使用。

一点一点变好 1489

从Microchip SDK到STM32实战:手把手教你移植LAN9252 EtherCAT从站驱动(含EEPROM配置避坑)

本文详细介绍了如何将Microchip SDK中的LAN9252 EtherCAT从站驱动移植到STM32F407平台,包括FSMC接口配置、中断处理适配和EEPROM配置等关键步骤。通过实战指南和避坑技巧,帮助开发者快速实现高性能EtherCAT从站设备的开发,适用于工业自动化领域。

weixin_29197835的博客 446

9.27华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

9.26华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

算法大师! 493

linux中多进程调试,linux下用gdb调试多进程

今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表:这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的。一、多进程调试的命令1、set follow-fork-mode parent|child因为gdb在一般情况下,只会调试主进程。这条命令就可以使gdb来实现多进程的调试,进入gdb后默认调试的是parent,要想调试child的话,需要设置set...

weixin_39922147的博客 699

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2586

linux下多进程的调试

linux下多进程的调试:  (1)follow-fork-mode           set follow-fork-mode [parent | child] ———— fork之后选择调试父进程还是子进程           (parent: fork之后继续调试父进程;child: fork之后调试父进程。默认的是fork之后调试父进程)           set detach

u011848617的专栏 2288

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

linux中多进程调试,Linux下多进程的调试

Linux下多进程的调试:(1)follow-fork-modeset follow-fork-mode [parent | child] ———— fork之后选择调试父进程还是子进程(parent: fork之后继续调试父进程;child: fork之后调试父进程。默认的是fork之后调试父进程)set detach-on-fork [on | off] ———— 指示gdb在fork之后是否...

weixin_39771614的博客 181

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux gdb多进程、多线程调试

目录 常用命令 堆栈相关命令 更为详细的断点调试 gdb多进程调试 gdb多线程调试 前言 gdb 是linux平台下进行程序调试的最常用的工具。简单的程序调试就是加断点,然后一步一步让程序运行,直到找到 bug 。一般的程序调试起来比较简单,但是在多进程或多线程情况下调试起来就比较麻烦。 若 test.c 是你想要调试的程序,那么在编译时需要加 -g,即 gcc test.c -g -o test。完成编译后使用命令:gdb test。 常用命令 命令 ...

Tyler_Zx的博客 2940

假人有限元模型

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

linux下用gdb调试多进程

今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的。 一、多进程调试的命令 1、set follow-fork-mode parent|child 因为gdb在一般情况下,只会调试主进程。这条命令就可以使gdb来实现多进程的调试,进入gdb后默认调试的是parent,要想调试child的

Payshent的博客 1335

Linux gdb调试多进程

gdbgdb是Linux下的调试工具,如果需要调试,则要在编译时加上-g选项,否则无法调试。gdb常用指令:gcc/g++ -g test.c/test.cpp ———-调试前先对源文件进行编译,注意一定要加 -g。 gdb a.out ——— a.out为可已经编译好的可执行文件(当然如果存在语法错误是肯定不能进入gdb调试的)。 list/l 行号 ——- 显示源代码,从指定行号处开始显示,每...

雪碧柠七的博客 2078

Linux:gdb调试多进程

gdb是Linux下的一款调试工具。我们的进程需要调试的话,那么在编译的时候需要加上-g选项,这个选项是增加调试信息。如果不加,则无法调试。如果有core文件的话,可以用core文件与进程一起调试。 下面我们先来介绍一下gdb下的基本指令 list(l)行号:显示源代码。一次显示10行 list(l)函数名:列出某个函数的源代码 r或run:运行程序 s或step:进入函数调用 breakt...

Chenxi13 547

Linux-gdb调试||多线程调试||多进程调试||详解

1.gdb调试的基本命令 gdb是linux下调试程序的基本工具,调试的前提是在程序中加入调试信息,在编译时通过加上-g参数来完成。 例如我们有main.c源文件: 通过命令: gcc -o main main.c -g 这样就在main中加入了调试信息,方可调试。 调试的一般流程: 加入调试信息 gdb启动: 例如gdb main 加入断点 运行程序 调试 /退出 下面说...

李志杰的博客 989

Linux多进程 与GDB调试多进程------Linux开发面试必问

u :显示进程的详细信息x : 显示没有控制终端的进程j : 列出与作业控制相关的信息。

zbz123456789_的博客 468

linux基础之gdb调试多进程,多线程

一.gdb常用目录表 操作 描述 l 命令相当于list,从第一行开始列出源码 回车 重复上一次命令 break +行号 设置断点 break+函数名 在函数的入口点设置断点 r 运行程序running的简写 into break 查看断点信息 n 单语句执行 ,next的简写 c 继续运行程序,continue的简写 bt

someday1314的博客 556

Linux:查看调试多进程和多线程调试和查看

Linux学习-目录 1.进程查看 2.进程调试 2.1:单进程调试 2.1:多进程调试 3.线程查看 4.线程调试 4.1:进入gdb调试中 4.2:查看线程信息 4.3:设置断点,并执行线程3的函数,指行完毕继续运行到断点处 4.4:只运行当前线程 4.5:所有线程同步执行 1.进程查看 eg: #include<stdio.h> #i...

triorwy的博客 2922

linux gdb 调试多线程 多进程 显示宏

一、gdb调试多线程 gdb)info thread 查看当前进程的线程。  gdb)thread 切换调试的线程为指定ID的线程。  gdb)break file.c:100 thread all  在file.c文件第100行处为所有经过这里的线程设置断点。 gdb)set scheduler-locking off|on|step。在使用step或者continue命令调试当前被调

yangzhenzhen的专栏 3587
上一篇: Linux Mint 17 下安装搜狗拼音输入法
下一篇: Emacs文件管理
ly0303521
博客等级 码龄17年 135粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值