본문 바로가기
다양한 TIP

daemon에 gdb로 붙는 두가지 방법(pid, 직접실행)

by 유기농프로그래밍 2024. 8. 23.
반응형

Daemon 디버깅방법

gdb를 사용하여 데몬(daemon)을 디버깅하는 방법입니다.

 

이미 실행 중인 데몬에 gdb를 붙이는 방법

이미 실행 중인 데몬 프로세스에 gdb를 붙이는 방법입니다.

  1. 데몬의 PID(프로세스 ID) 확인: 먼저 디버깅하려는 데몬의 프로세스 ID를 알아야 합니다.
  2. ps, pgrep 명령어 등을 사용해 PID를 확인할 수 있습니다.
  3. ps -ef | grep your-daemon-name
  4. gdb로 프로세스에 연결: 확인한 PID를 이용해 gdb를 실행합니다. 이렇게 하면 실행 중인 프로세스에 gdb가 연결됩니다. 이후 일반적인 gdb 명령어를 사용해 디버깅할 수 있습니다.
  5. gdb -p <PID>

데몬을 gdb를 통해 직접 실행하는 방법

데몬이 실행되기 전에 gdb를 통해 디버깅하는 방법입니다.

  1. 데몬의 실행 파일을 gdb로 실행: 데몬의 실행 파일을 gdb로 직접 실행합니다.
  2. gdb /path/to/daemon
  3. 데몬의 초기화를 방해하지 않도록 설정: 데몬은 보통 백그라운드에서 실행되기 위해 fork()를 사용합니다. gdb에서 이 상황을 처리하기 위해 set follow-fork-mode 명령어를 설정해야 합니다.이 명령어는 fork() 호출 시 자식 프로세스를 따라가도록 gdb를 설정하는 것입니다.
  4. (gdb) set follow-fork-mode child
  5. 데몬 실행: gdb 안에서 데몬을 실행합니다.데몬이 실행되면서, 자식 프로세스가 생성되면 gdb가 그 자식 프로세스를 디버깅할 수 있게 됩니다.
  6. (gdb) run

주의사항

  • 데몬이 특정 권한(예: root)으로 실행되어야 하는 경우, gdb도 동일한 권한으로 실행해야 합니다.
  • gdb를 통해 실행하면 데몬이 정상적으로 종료되지 않거나, 신호 처리에 문제가 생길 수 있으므로, 디버깅이 끝난 후 데몬을 정상적으로 재실행하는 것이 좋습니다.

위 방법들을 사용해 gdb로 데몬을 디버깅할 수 있습니다.

반응형

댓글