※进程

(1)默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB支持多进程的分别以及同时调试,也就是说,GDB可以同时调试多个程序。只需要设置follow-fork-mode和detach-on-fork即可。

*设置方法:a)启动gdb;b)set follow-fork-mode [parent|child]   set detach-on-fork [on|off];c)启动程序文件;d)break fork 在fork函数处下断点。

(2)attach子进程的方法:用attach <pid>命令attach到子进程然后调试。步骤是:a)首先在需要调试的子进程的初始代码中加入一段特殊的代码,然后运行调试程序;b)用ps -ef | grep 查看产生的子进程的pid;c)启动gdb,attach到进程之后就可以调试了。

./test & 在后台执行程序

运行gdb

(gdb)attach <pid>

(gdb)stop 暂停子进程

*下断点后就可以开始调试了

※线程

*在多线程编程时,当我们需要调试时,有时需要控制某些线程停在断点,有些线程继续执行。有时需要控制线程的运行顺序。有时需要中断某个线程,切换到其他线程。这些都可以通过gdb实现。

gdb test

(gdb)l 1 显示代码

(gdb)r 5    r 16在第五行、第十六行下断点

(gdb)r 开始运行

(gdb)thread 3 切换到线程3

※gdb调试指令

*list  linenum      显示程序第linenum行周围的程序

*list  function      显示函数名为function的函数的源程序

*step count         一次性执行count步,如果有函数会进入函数

*next count         一次执行count步,有函数也不会进人

*finish                 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值以及参数信息

*until                   退出循环体

*watch   expr                 为表达式expr设置一个观察点,一旦表达式值有变化,马上停住程序

*rwatch  expr                  当表达式expr被读时,停住程序

*awatch expr                  当表达式的值被读或被写时,停住程序

*info      watchpoints       列出所有观察点

多线程调试:
*info threads                                       显示所有线程
*thread id                                            切换到指定线程
*break filename:linenum thread all     在所有线程相应行设置断点,注意如果主线程不会执行到该行,并且启动all-stop模式,主线程执行n或s会切换过去
*set scheduler-locking off|on\step       默认off,执行s或c其它线程也同步执行。on,只有当前相称执行。step,只有当前线程执行
*show scheduler-locking                     显示当前模式
*thread apply all command                 每个线程执行同意命令

gdb调试多进程和多线程相关推荐

  1. GDB 调试多进程或者多线程应用

    GDB 是 linux 系统上常用的 c/c++ 调试工具, 功能十分强大. 对于较为复杂的系统, 比如多进程系统, 如何使用 GDB 调试呢? 考虑下面这个三进程系统 : 进程 ProcessChi ...

  2. 使用gdb调试多进程和多线程

    GDB调试多进程 1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-f ...

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

    1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的 分别以及同时 调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mod ...

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

    1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的 分别以及同时 调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mod ...

  5. [Linux]gdb调试多进程多线程例程

    gdb相信学linux的同学已经比较熟悉了吧,它是linux下代码调试工具.我们在写c语言,c++的代码时经常会用到,它有一些常用的调试命令: run(r):运行程序,如果有断点在下一个断点处停止 s ...

  6. 使用 GDB 调试多进程程序

    使用 GDB 调试多进程程序 来源 https://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常 ...

  7. GDB调试多进程|多线程程序

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

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

    今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的. 一.多进程调试的命令 1.set follo ...

  9. gdb调试多进程程序

        1.gdb下调试多进程程序只需要以下几条命令即可              除此之外还可以查看正在调试的进程 info inferiors, 同时也可以将当前正在调试的进程切换到另外一个进程中 ...

最新文章

  1. Docker系列 五.Docker容器数据卷
  2. foreach循环怎么获取全部返回值_jmeter基础逻辑控制器之ForEach控制器
  3. web developer tips (70):使用命令脚本安装IIS7
  4. C++对C的加强之C++中所有的变量和函数都必须有类型
  5. Logger.getLogger和 LogFactory.getLog
  6. 前端学习(3299):自定义hook
  7. [配置中心] --- consul
  8. python代码封装加密_静态编译python源代码,使用Nuitka加密你的py源码
  9. 5.1 原型设计 - 页面流程图
  10. [转]vmlinuz
  11. hp台式计算机u盘启动设置,惠普bios怎么设置u盘启动 惠普bios设置u盘启动方法
  12. 【UAV】光流传感器原理分析及讲解
  13. K8S故障排查指南- but volume paths are still present on disk
  14. 提高电火炉使用安全,微波雷达模组感应控制,雷达感应技术方案
  15. linux opensource,GitHub - opensourceteams/linux: linux命令
  16. easyUI的基本知识
  17. Windows 7安装ATI驱动
  18. 新一代智慧医疗整体解决方案
  19. 线控制动系统(EWBS)
  20. 如何使用电脑将图片进行压缩?图片压缩软件怎么操作?

热门文章

  1. 软考中级信息安全工程师开编
  2. RVC使用指南(一)-基本配置
  3. 计算机工程与应用3天外审,200629计算机工程与应用.pdf
  4. vue 监听对象里的特定数据
  5. LG_2051_[AHOI2009]中国象棋
  6. 返回固定页面的web服务器
  7. Android之哭笑不得的BUG--xml设置的padding不起作用,幕后黑手竟然是?
  8. JAVA Native Method 转自CSDN
  9. Ajax Control Toolkit--Slider:有朝一日倒过来
  10. 我所理解的JVM(三):字节码的执行