fork를 통해 자식 프로세스 생성 및 debug

gyubong park·2021년 10월 18일
0

자식 프로세스를 생성해보자 그리고 이를 디버깅해보자

#include <iostream>
#include <unistd.h> // fork를 위한 라이브러리

using namespace std;

int main() {
    cout << "this is fork test" << endl;

    pid_t pid;

    pid = fork();

    if(pid < 0) exit(EXIT_FAILURE); // fork 실패
    if(pid > 0) exit(EXIT_SUCCESS); // fork 성공, 부모 프로세스 종료

    if (setsid() < 0) // 자식 프로세스가 세션 리더가 됨
        exit(EXIT_FAILURE);

    cout << "fork sucess, this is Child" << endl;

    return 0;
}

이대로 실행을 한다면 아래와 같이 잘 실행될 것이다

하지만 이를 디버깅해보면 부모 프로세스가 종료되는 시점에 디버깅도 종료가 된다
어떻게 하면 자식프로세스로 자연스럽게 넘어갈 수 있을까?

  • 브레이킹 포인트로 fork 전 지점을 확보

  • 디버깅 모드로 진입

  • debugger console에 다음 기입 (하나씩 차례대로 기입)

    ```
    set follow-fork-mode child 
    set detach-on-fork off
    ```

  • 계속해서 디버깅

profile
초보 개발자

0개의 댓글