Linux——gdb调试时多进程切换方法(attach/follow-fork-mode)
对于程序中创建子进程的情况,进行gdb调试时会默认选择父进程进行调试,假如需要对子进程进行调试就需要使用特殊方法。
共有两种方法可供选择:
目录
一.attach子进程PID
①.运行进程
②获取进程PID(示例调试子进程)
③打开gdb并将attach进程PID
④开始调试
二.set follow-fork-mode mode
①选择程序进入gdb调试
②set detach-on-fork off(可不选择该指令)
③set follow-fork-mode child(以调试子进程为例)
④set follow-fork-mode parent(切换调试父进程)
一.attach子进程PID
这个方式就是当进程运行时,获取进程PID然后在进入gdb调试时,通过attach指令调试PID对用的进程。
本质就是指定PID然后调试,并不是真正的进程切换调试。
示例代码:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main()
{pid_t id = fork();if(id == 0){while(1){printf("%s\n", "i am child");sleep(1);}}else{while(1){printf("%s\n", "i am father");sleep(3); }}return 0;
}
过程如下:
①.运行进程
②获取进程PID(示例调试子进程)
③打开gdb并将attach进程PID
④开始调试
二.set follow-fork-mode mode
mode的可供选择值有两个parent与child,对应父进程与子进程。
(gdb) set follow-fork-mode parent//调试父进程(gdb) set follow-fork-mode child//调试子进程
这个只能选择fork的第一个子进程作为child进行调试。
还是使用上述示例代码,过程如下:
①选择程序进入gdb调试
②set detach-on-fork off(可不选择该指令)
该gdb指令是当调试父或子进程时,另一个会自动暂停在fork位置。这里使用是为了便于观察
③set follow-fork-mode child(以调试子进程为例)
④set follow-fork-mode parent(切换调试父进程)
The darkest hour is that before the dawn—— Fuller
如有错误,敬请斧正
Linux——gdb调试时多进程切换方法(attach/follow-fork-mode)相关推荐
- 使用GDB调试产生多进程的程序
如果一个进程fork了多个进程,这时使用GBD工具对程序进行调试会如何呢? 实际上,GDB 没有对多进程程序调试提供直接支持.例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试 ...
- linux子系统gdp调试,Linux GDB调试 详述
今天来分享下gdb的简单调试,我这里写了个例子 三个.c文件 func1.c func2.c main.c 首先生成可调试的执行文件 gcc -g func1.c func2.c main.c -o ...
- gdb调试时,Program received signal SIGPIPE, Broken pipe.
今天在gdb调试时,发现总是出现Program received signal SIGPIPE, Broken pipe,搜索了网上的资料,发现是在调试时,接收到了SIGPIPE这个signal信号导 ...
- [Linux]gdb调试多进程多线程例程
gdb相信学linux的同学已经比较熟悉了吧,它是linux下代码调试工具.我们在写c语言,c++的代码时经常会用到,它有一些常用的调试命令: run(r):运行程序,如果有断点在下一个断点处停止 s ...
- Linux gdb调试(4):多进程与多线程调试
一,gdb的基础知识 1>介绍: gdb是Linux环境下的代码调试工具. 2>使用:需要在源代码生成的时候加上 -g 选项. 3>开始使用: gdb binFile 4>退出 ...
- Linux GDB调试完全教程
转自 http://blog.csdn.net/gatieme 本文将主要介绍linux下的强大调试工具是怎么完成这些工作的. 之所以要调试程序,是因为程序的运行结果和预期结果不一致,或者程序出现运行 ...
- 【全网最暴力解决方案】使用gdb调试时遭遇“Missing separate debuginfos, use: debuginfo-install glibc....”报错信息
问题现象 日前在CentOS 6虚拟机上使用gdb调试一个由简单的.c文件编译生成的可执行程序遭遇如下gdb报错 Missing separate debuginfos, use: debuginfo ...
- Linux GDB调试死锁问题
1. 死锁介绍 1.1 锁的简介 由于多线程的模式下,各个线程并发运行(注意"并发和"并行"的区别),为了保证各个线程对公共资源的访问时出现数据不一致性的问题,出现了锁的 ...
- Linux GDB调试
Linux 段错误调试 core 文件调试 编译时 加上 -g 使编译出的文件带 调试信息 gcc -g main.c -o main 使编译出的可执行文件带调试信息gdb main //对 main ...
最新文章
- js文件引用方式及其同步执行与异步执行
- Pandas.DataFrame转置
- 深度学习100例-卷积神经网络(CNN)识别眼睛状态 | 第17天
- java面向对象特性_java面向对象编程三大特性
- OpenGL基础17:颜色
- JavaWeb教程———过滤器
- 二叉搜索树前序序列转后序序列(或相反)
- 利用大白菜制作多系统启动U盘(ubuntu+windows)
- mysql创建表说明_MYSQL库表的创建以及说明
- PTA——基础编程题 | 7-27 冒泡法排序 (20分)
- 设计师必看的十部电影
- 用友BIP对接外部旺店通企业版奇门系统
- mysql 编程算法_十大编程算法助程序员走上高手之路
- 计算机网络管理员设备清单,网络管理员资料:计算机网络互联设备路由器
- minecraft服务器搭建教程_Minecraft我的世界服务端搭建教程,附优化启动参数
- “假离婚、真套现” 解禁潮将至 拉卡拉上演“一出好戏”
- UltraEdit-32 v14.10 简体中文版
- java 根据特殊字符截取字符串_java中如何截取特殊字符串
- 阿里云盘小白羊版:一款支持满速上传下载的阿里云盘
- HNUST 2204 买水果