gdb调试多进程程序——gdb attach用法
前一阵在调试多进程mpi死锁的bug,多进程程序只靠输出来定位bug是一件相当麻烦的事=.=!,后来发现可以用gdb attach来调试多进程程序。 原来一直用gdb调试单进程的程序,感觉打开了新世界的大门哈哈哈。 下面介绍如果用gdb attach调试正在运行的程序,用法如下。 第一步:运行多进程程序。 首先正常运行多进程程序。在发生mpi死锁之后,不要停掉程序!! 第二步:获得运行程序的所有pid。 开启另一个窗口,输入 ps -aux | grep 可执行文件名,此时屏幕上会打印出运行程序的信息。 例:运行两个进程的程序,会出现如下3条信息,可以分为两类,一类是运行程序的信息,另一类是grep搜索进程的信息。可以通过最后一列来区分。 下面3条信息中最后一列为运行命令的为前两条命令是我们需要关注的命令。 进程的pid在第二列,此时两个进程的pid分别为209947 和209959。 $ ps aux | grep test z 209947 0.1 0.0 431664 5552 pts/91 Sl+ 16:52 0:00 运行命令 z 209959 0.0 0.0 92984 596 pts/91 S+ 16:52 0:00 运行命令 z 211971 0.0 0.0 109584 956 pts/92 S+ 16:53 0:00 grep test 第三步