使用gdb调试的时候,gdb只能跟踪一个进程。可以在fork函数调用之前,通过指令设置gdb调试工具跟踪父进程或者是跟踪子进程。默认跟踪父进程。

set follow-fork-mode child 命令设置gdb在fork之后跟踪子进程。

set follow-fork-mode parent 设置跟踪父进程。

注意,一定要在fork函数调用之前设置才有效。(可以通过在fork函数处设置断点,然后run,然后set follow-fork-mode child选择跟踪子进程。

首先,进入gdb调试第一步,输入list查看代码,然后选择要在哪些地方设置断点。

另外,gdb跟踪子进程,采用n单步执行时,父进程不会单步执行,直接正常运行(run)完,直接输出结果到屏幕上,而子进程会受到调试控制,一步一步的执行。在创建子进程之前,设置好跟踪哪一个进程即可,没有跟踪的进程会正常执行,输出结果,不受调试控制。

当有多个子进程时,需要选择跟踪其中一个子进程,则需要根据循环因子i来进行控制,因为i可以判别是哪一个进程,进而根据i来设置条件断点,如:b 17 if i==3  然后,set follow-fork-mode child  则可以跟踪第3个子进程,虽然其余子进程也可以跟踪,但是因为没设置断点,所以直接运行输出结果。

gdb调试(如何跟踪指定进程)相关推荐

  1. gdb 调试core文件

    @1:gdb exe文件 core文件 @2:bt 查看栈 @3:f N 进入某个函数,其中N是整数,是 bt 命令展示的栈号 @4:x/[nfu]  <addr> 展示某个内存地址的变量 ...

  2. 为什么在Docker里使用gdb调试器会报错

    背景 前几天一个小伙伴发邮件问我,他在docker内部使用gdb调试时刻遇到了gdb如下报错信息 ptrace:Operation not permitted 当时我的答复是在docker creat ...

  3. 使用 GDB 调试 Android 应用

    GNU 工程调试器(GDB)是一个常用的 Unix 调试器.本文详述使用 gdb 调试 Android 应用和进程的方法. 调试运行中的应用或进程 gdbclient 是源码库中的一个 shell 脚 ...

  4. 在Linux中如何使用gdb调试C程序

    无论多么有经验的程序员,开发的任何软件都不可能完全没有 bug.因此,排查及修复 bug 成为软件开发周期中最重要的任务之一.有许多办法可以排查 bug(测试.代码自审等等),但是还有一些专用软件(称 ...

  5. gdb 调试多线程 神贴

    gdb 调试多线程 如果目标进程已经core dump了,那么 gdb -c core xxx   xxx是对应的程序文件. 如果目标进程还在运行,通常此时用于调试线程死锁的情况.有两种方法 一是 g ...

  6. 攻防世界reverse进阶easyre-153 writeup(#gdb调试父子进程、#ida版本差异)

    文章目录 学习目标: 引言 第一步.查脱壳 1.查壳 2.脱壳 3.查看文件格式 第二步.IDA静态分析 1.IDA版本的小坑 2.分析main函数 3.分析lol函数 第三步.gdb动态分析 1.m ...

  7. gdb 笔记(02)— gdb 调试执行(启动调试、添加参数、附加到进程、调试 core 文件)

    在编译程序时,使用 gcc 或者 g++ 时一定要加上 -g 选项,如 gcc -g -o hello hello.c 以便调试程序含有调试符号信息,从而能够正常调试程序.否则则会出现如下提示,导致不 ...

  8. Ubuntu下正确姿势使用GDB调试Android Native进程

        Ubuntu下正确姿势使用GDB调试Android Native进程 前言   对于Android Native进程大家是既爱又恨啊,爱的是它能为我们的Android世界带来别样的精彩,狠的是 ...

  9. linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试

    接上一篇:linux_环境变量-C语言代码打印环境变量-getenv函数-setenv函数-unsetenv函数 本次来分享进程类相关的学习,主要就是分享一些函数的使用,来,开始上菜: 目录 1.fo ...

最新文章

  1. JS写的不咋地的碰撞检测
  2. Java数据结构和算法:HashMap,哈希表,哈希函数
  3. 【Python】一文掌握Conda软件安装:虚拟环境、软件通道、加速solving、跨服务器迁移...
  4. 一个大型虚拟项目包含位于不同地点的许多干系人_项目管理与人生
  5. node.js初入手
  6. php模板中的数组在哪,php – Twig:从包含的模板中添加项目到数组
  7. centos7开放80端口_Centos7.4系统 httpd模式搭建文件服务器
  8. Confluence 6 数据收集隐私策略
  9. mysql升更新命令_MySQL升级的3种方法
  10. 10g gtx 光纤通信测试_光纤通信系统仿真实验
  11. win10连接校园网(wifi)开热点手机连接显示“已连接但无法访问互联网”解决办法
  12. C语言的加减乘除函数
  13. ICO图标在线生成,php生成ICO图标在线制作源码
  14. 【雕爷学编程】Arduino动手做(76)---2路光耦继电器模块
  15. Linux下刻录cd,用debian命令刻录CD
  16. 访客一体机六大鸡肋功能
  17. Hadoop常用命令介绍
  18. 国内数字藏品的乱象与未来
  19. 1万的android手机推荐,Vertu推天价Android手机:入门级售价1万美元
  20. 百度云服务器Ubuntu18.04部署web项目

热门文章

  1. flash builder4.7 for Mac升级AIRSDK详解
  2. 计算机硬件系统的构成教学设计,2.1 计算机硬件系统教学设计思路
  3. php如何清理网站缓存,php怎么清除opcache缓存
  4. java项目中多个定时器_在java项目中如何使用Timer定时器
  5. linux vim 执行shell命令行,Linux中vim和shell
  6. echarts vue 柱状图实例_VUE中使用Echarts绘制柱状图
  7. 在html中样式表的三种类型,css样式有哪几种类型?
  8. android怎么垂直居中且靠右,placeholder 靠右垂直居中/位置兼容
  9. 手机屏幕宽高像素计算_2020年的智能手机拍照新设计,就全看下半年了
  10. C语言开发笔记(三)自加和自减