코어덤프가 많이 남아있는 상황에서 디버깅을 할 때 난감할 것이다.
이유는 코어덤프 종류가 하나인가 여러개인가부터 파악하기에 너무 양이 많기 때문이다.
코어덤프들의 bt(backtrace)를 모두 출력하면 같은 녀석인지 아닌지 바로 판별할 수 있을 것이다.
이에 gdb 내용을 모두 출력하는 방법을 소개한다.
gdb 는 기본적으로 코어덤프 파일과 함께 해당 binary를 인자로 넣어주면 된다.
ex)
gdb -c coredump_file test_bin
/var/tmp/coredump/ 폴더에 아래와 같이 5개의 파일이 있다고 가정한다.
core.1 core.2 core.3 core.4 core.5
하나씩 보려면 아래와 같이 명령어를 쳐야한다.
gdb -c core.1 test_bin
gdb -c core.2 test_bin
gdb -c core.3 test_bin
gdb -c core.4 test_bin
gdb -c core.5 test_bin
하지만 내가 보고 싶은 것은 bt(backtrace) 혹은 일관된 명령어들 뿐이라면 아래와 같이 치면 된다.
ls | xargs -I core gdb -c core test_bin -ex='info proc' -ex='bt' --batch
[설명]
ls : 리스트 보기
xargs : 유닉스 및 유닉스 계열 운영 체제의 명령어로 표준 입력을 통해 명령 줄을 만들고 실행하는 데 사용
-I 옵션 : 인자로 들어오는 이름을 정할 수 있다.(위의 예시에서는 core라는 이름을 적용)
gdb : 보통은 GDB라고 부르는 GNU 디버거는 GNU 소프트웨어 시스템을 위한 기본 디버거
-c 옵션 : 열어볼 코어덤프를 넣는 옵션
-ex 옵션 : gdb에 들어간 후 사용할 명령어(info proc는 사용한 프로그램을 출력, bt는 backtrace를 출력)
--batch 옵션 : gdb 프로그램으로 들어가는게 아니라 console 상에서 바로 연이어 처리할 수 있다.
-ex를 이어서 여러 명령어를 순서대로 입력할 수도 있다.
'다양한 TIP' 카테고리의 다른 글
Linux Heap Memory 영역 해제(진짜 해제) (0) | 2019.10.23 |
---|---|
Python string 개행 삭제(rstrip) (0) | 2019.10.11 |
[Linux] IP와 계정으로 접근제어하기(sshd) (0) | 2019.10.08 |
댓글