gdb调试多进程和多线程
※进程
(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 列出所有观察点
gdb调试多进程和多线程相关推荐
- GDB 调试多进程或者多线程应用
GDB 是 linux 系统上常用的 c/c++ 调试工具, 功能十分强大. 对于较为复杂的系统, 比如多进程系统, 如何使用 GDB 调试呢? 考虑下面这个三进程系统 : 进程 ProcessChi ...
- 使用gdb调试多进程和多线程
GDB调试多进程 1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-f ...
- gdb调试多进程和多线程命令 .
1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的 分别以及同时 调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mod ...
- gdb调试多进程和多线程命令
1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的 分别以及同时 调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mod ...
- [Linux]gdb调试多进程多线程例程
gdb相信学linux的同学已经比较熟悉了吧,它是linux下代码调试工具.我们在写c语言,c++的代码时经常会用到,它有一些常用的调试命令: run(r):运行程序,如果有断点在下一个断点处停止 s ...
- 使用 GDB 调试多进程程序
使用 GDB 调试多进程程序 来源 https://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常 ...
- GDB调试多进程|多线程程序
1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mode( ...
- linux中多进程调试,linux下用gdb调试多进程
今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的. 一.多进程调试的命令 1.set follo ...
- gdb调试多进程程序
1.gdb下调试多进程程序只需要以下几条命令即可 除此之外还可以查看正在调试的进程 info inferiors, 同时也可以将当前正在调试的进程切换到另外一个进程中 ...
最新文章
- Docker系列 五.Docker容器数据卷
- foreach循环怎么获取全部返回值_jmeter基础逻辑控制器之ForEach控制器
- web developer tips (70):使用命令脚本安装IIS7
- C++对C的加强之C++中所有的变量和函数都必须有类型
- Logger.getLogger和 LogFactory.getLog
- 前端学习(3299):自定义hook
- [配置中心] --- consul
- python代码封装加密_静态编译python源代码,使用Nuitka加密你的py源码
- 5.1 原型设计 - 页面流程图
- [转]vmlinuz
- hp台式计算机u盘启动设置,惠普bios怎么设置u盘启动 惠普bios设置u盘启动方法
- 【UAV】光流传感器原理分析及讲解
- K8S故障排查指南- but volume paths are still present on disk
- 提高电火炉使用安全,微波雷达模组感应控制,雷达感应技术方案
- linux opensource,GitHub - opensourceteams/linux: linux命令
- easyUI的基本知识
- Windows 7安装ATI驱动
- 新一代智慧医疗整体解决方案
- 线控制动系统(EWBS)
- 如何使用电脑将图片进行压缩?图片压缩软件怎么操作?