ch9_시그널 실습

2018. 11. 27. 18:13임베디드sw공학/리눅스

1, 무한 루프 프로그램에게 시그널 보내기

 

$ kill -SIGINT "pid" (ctrl + c)

$ kill -SIGSTOP "pid" <- 잠시 process 중단. Rnning -> Suspend 상태로 (ctrl + z)

$ kill -SIGCONT "pid" <- process 재개 suspend -> Running 상태로

$ kill -SIGKILL "pid" <- process를 종료  == kill -9 "pid"

$ kill -SIGQUIT "pid" <- process 가 메모리에 올라가 있는 상태를 core dump파일을 만든다. debugging 할 때, 쓰기 위해서. (ctrl + \)

확인 : $ ps <- 현재 프로세스들의 상태

 

+) $ ulimit -c unlimted <- 멈출 때마다 자동으로 core dump 생성.

 

2, 디버깅 해보기

 

$ gcc -o "실행파일명" -g "코드.c"

-> 디버깅 정보가 포함되어 사이즈가 커진다.

 

 2) 디버깅 하기

gdb ./실행파일명

 

- (gdb) l

 

- (gdb) b main <- main 함수의 중단점 하기.

 

- (gdb) r <- 재실행 만약, 중단점이 있다면 거기서 멈춤

 

- (gdb) s <- step 다음 진행 가는 것. 

 

- 그냥 Enter를 누르면, 이전 명령어대로 자동 실행

 

- (gdb) p "변수명" <- 변수의 값 보기

 

-(gdb) bt  <- back trace , 부르는 과정, stack에 쌓이는 과정을 볼 수 있다.

 

- (gdb) quit <- 디버그에서 탈출

 

 

3, 무한 루프하는 프로그램을 ctrl + \ 을 사용하였을 때, 생기는 core dump 파일을 이용하여 어디서 멈췄는지 디버깅 해보자.

 

$ gdb ./실행파일명 core

 

4, sigaction(2)-1

 

5, sigaction(2) -2

 

6, alarm(2)

 

 

 

 

 

'임베디드sw공학 > 리눅스' 카테고리의 다른 글

12. 쓰레드 실습  (0) 2018.12.04