-
반응형
addr2line 은 프로그램의 심벌 주소값들을 파일 이름과 라인 번호로 변환한다.
테스트 코드 : test.c
#include
void callback_func(){ printf("callback func\n"); } int main() { printf("Hello World\n"); callback_func(); return 0; } make symbol
~ $ gcc -Wl,-Map=test.map -g -o test test.c ~ $ grep callback test.map 0x0000000000400508 callback_func
라인 확인
~ $ addr2line -i 0x0000000000400508 -e test ~/test.c:4
프로그램이 실행 중, 런타임 오류가 발생한 경우 symbol 값을 시스템에서 stdout으로 출력되며,
그 내용을 기반으로 addr2line 명령어로 어느 코드의 라인에서 발생했는지 찾을 수 있다.
그 전에 몇가지 조건이 필요하다.
- 컴파일 옵션에 -g 옵션 주고 컴파일
- 컴파일 옵션에서 최적화 옵션이 포함시키지 않는다.(최적화 옵션으로 인해 Symbol 위치를 정확히 찾을 수 없음)
반응형