Linux GDB的简单使用——多进程
GDB多进程调试
测试代码
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
int i = 10;
pid_t pid;
pid = fork();
if(pid == -1){
printf("fork error\n");
return -1;
}
if(pid == 0){
i = 1;
printf("This is child\n");
printf("i = %d\n",i);
}
else{
printf("This is father\n");
printf("i = %d\n",i);
wait(NULL);
}
return 0;
}
调试过程
运行gdb
先在主函数打断点
输入r执行代码
跟着父进程还是子进程运行设置
跟着父进程运行(即不会运行子进程的代码)
set follow-fork-mode parent
注意:当在执行完fork后,执行n继续运行时,程序会直接运行完父进程
跟着子进程运行
set follow-fork-mode child
注意:当在执行完fork后,执行n继续运行时,程序会直接运行完父进程
跟着子进程运行的示例
当执行到fork后,程序会直接运行完父进程
如下图:
之后的程序执行的代码都为子进程的代码
如下图: