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 |
---|