在Linux系统操作中,经常会遇到多进程调试的问题,其实多进程的调试没有想象中的那么复杂,下面小编就给大家介绍下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”
【linux如何调试多进程程序】 上面就是Linux多进程程序调试的方法介绍了,多进程的调试我们通常使用的是gdb,当你在调试的时候多少都会用到gdb调试工具 。
推荐阅读
- 如何在Linux中安装虚拟化工具llibvirt
- Linux系统中定时命令的使用技巧
- Linux加载raid驱动的步骤
- 如何使用CRT命令工具查看Linux系统资源信息
- Linux关闭selinux安全子系统的技巧
- Linux安装PCNS软件的方法
- Linux拒绝国外IP访问的步骤
- 如何选购微波炉:11个要点需要注意 如何选购微波炉
- 巧用公积金贷款买车 公积金如何贷款买车
- 寒假计划制定了吗?如何让孩子过一个有意义的寒假!