본문 바로가기
다양한 TIP

gdb 내용 출력방법(batch)

by 유기농프로그래밍 2019. 10. 17.
반응형

코어덤프가 많이 남아있는 상황에서 디버깅을 할 때 난감할 것이다.

이유는 코어덤프 종류가 하나인가 여러개인가부터 파악하기에 너무 양이 많기 때문이다.

 

코어덤프들의 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를 이어서 여러 명령어를 순서대로 입력할 수도 있다.

 

 

반응형

댓글