gdb常用命令及gdb调试多进程/线程程序&coredump |
您所在的位置:网站首页 › binfile是什么文件 › gdb常用命令及gdb调试多进程/线程程序&coredump |
3.gdb调试
3.1设置调试模式和Catchpoint 设置调试父子进程,gdb跟主进程,子进程block在fork位置。 这时可以另开一个终端,使用如下命令查看当前CentOS系统所有进程的状态:发现父进程PID为10062,通过fork产生的子进程为10065: 同时,可以使用命令cat /proc/10062/status查看当前进程的详细信息:进程PID为10060,它的父进程(即GDB进程)为10062,同时这也是追踪进程ID,线程数Threads为1(共享使用该信号描述符的线程数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符)。 3.2 设置第一个断点在程序的第46行设置断点,并运行到断点处: 这时再次使用命令pstree -pul查看当前系统进程的状态:发现此时仍然只有父进程13162和子进程13159。 3.3 执行到第一个断点此时如果切换到子进程13162 重新切换到父进程13159 3.4 设置第二个断点并调试在第50行设置断点继续调试主进程(使父进程产生线程),其中父进程和线程到底是谁先执行是由内核调度控制的。 这时使用命令pstree -pul查看当前系统进程的状态:存在父进程13159和子进程13162以及父进程创建的一个线程14208(线程用大括号{}表示)。 同时,使用命令cat /proc/13159/status查看当前进程的详细信息:进程PID为13159,它的父进程(即GDB进程)为13154,同时这也是追踪进程ID,线程数Threads为2(当前父进程13159+线程14208)。 3.5 查看第二个断点处的调试信息 3.6手动切换到线程 3.7 开始执行第二个断点处的代码这时使用命令查看当前系统进程的状态:存在父进程13159和子进程13162,其中线程14208已经结束了。 本文部分参考:https://typecodes.com/cseries/multilprocessthreadgdb.html |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |