| 검색 | ?
대문 / 프로그래밍 / Application에서의 backtrace(call stack) dump 방법 (비정상 종료에 대한 디버깅)

Application에서의 backtrace(call stack) dump 방법 (비정상 종료에 대한 디버깅)

1.1. 개요

Application에 문제가 있는 코드로 인하여 비정상 종료되는 경우 어디가 문제인지를 확인하기 매우 어려울 때가 있습니다.

비정상적인 종료가 될 때 도대체 어느 부분을 호출한 시점에서 죽었는지 확인하기 위한 방법에는 여러가지가 있으나 그 중에서 backtrace 기법을 소개하고 정리해보았습니다.

1.2. Compile & Link option (Symbol 확인을 위해서 필요한 옵션입니다.)

  • 주) CPPFLAGS는 전처리기 옵션, CFLAGS는 컴파일러 옵션, LDFLAGS는 링커 옵션을 의미합니다.


1.3. 프로그램의 main 함수 근처에 다음과 같은 함수를 삽입합니다


1.4. 삽입했던 함수를 Signal handler 에서 호출되도록 main 함수내에 추가합니다.


1.5. 이제 프로그램에 버그가 있어 비정상 종료되는 경우 함수의 호출위치가 dump 되는 것을 확인할 수 있을겁니다.

세상에 버그없는 프로그램만 만드는 사람은 없습니다.

꼭 위 방법 적용해두시면 적어도 버그 잡는 시간을 줄일 수 있습니다.

본 방법을 사용하시길 강력히 권장합니다.


Copyright ⓒ MINZKN.COM
All Rights Reserved.