-
개발하다보면 에러가 발생한 물리 주소만 떡하니 알려주고 바이너리의 어떤 함수에서 죽었는지는 알려주지 않는 로그 메시지를 보게될 때가 있다. 이런 경우에는 addr2line 커맨드를 이용해 어떤 파일 몇번째 라인에서 에러가 발생했는지 확인 할 수 있다.
아래의 예제 코드를 통해 addr2line의 사용법을 익혀보자.
void func(void) { } int main() { printf("func:addr %p\n", func); }위 코드를 gcc에 -g 옵션을 주고 컴파일해서 실행해보면 특정 숫자 값을 출력하게 되는데 이 값은 func함수의 물리 주소 값이다. 이 값을 addr2line에 넣어서 실행해보면 func함수가 어떤 파일 몇번째 라인에 불렸는지 확인 할 수 있다. -e 옵션은 디버깅할 바이너리를 지정하는 값이고 마지막에 붙은 숫자는 주소 값이다.
'개발' 카테고리의 다른 글
오픈소스 라이센스 정리 (0) 2019.06.09 SDN과 NFV (0) 2019.04.21 스핀락, 뮤텍스, 세마포어 (0) 2018.11.07 FFmpeg (0) 2018.10.31 gcc로 pthread API 컴파일하기 (2) 2018.10.30