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后,程序会直接运行完父进程
如下图:
在这里插入图片描述

之后的程序执行的代码都为子进程的代码
如下图:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50438937/article/details/114270281
今日推荐