gdb常用命令及gdb调试多进程/线程程序&coredump

您所在的位置:网站首页 binfile是什么文件 gdb常用命令及gdb调试多进程/线程程序&coredump

gdb常用命令及gdb调试多进程/线程程序&coredump

2023-04-05 00:16| 来源: 网络整理| 查看: 265

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