-
개발하다보면 에러가 발생한 물리 주소만 떡하니 알려주고 바이너리의 어떤 함수에서 죽었는지는 알려주지 않는 로그 메시지를 보게될 때가 있다. 이런 경우에는 addr2line 커맨드를 이용해 어떤 파일 몇번째 라인에서 에러가 발생했는지 확인 할 수 있다.
아래의 예제 코드를 통해 addr2line의 사용법을 익혀보자.
void func(void) { } int main() { printf("func:addr %p\n", func); }
위 코드를 gcc에 -g 옵션을 주고 컴파일해서 실행해보면 특정 숫자 값을 출력하게 되는데 이 값은 func함수의 물리 주소 값이다. 이 값을 addr2line에 넣어서 실행해보면 func함수가 어떤 파일 몇번째 라인에 불렸는지 확인 할 수 있다. -e 옵션은 디버깅할 바이너리를 지정하는 값이고 마지막에 붙은 숫자는 주소 값이다.
'개발 > 삽질 기록' 카테고리의 다른 글
visual code definition 찾고 돌아가기 (0) 2020.12.13 RxJava: mapper function returned null 에러 (0) 2020.02.14 gcc로 pthread API 컴파일하기 (2) 2018.10.30 Github 페이지를 이용해서 이력서 만들기 (1) 2018.09.27 conda tensorflow 설치 및 jupyter notebook 연결 (0) 2018.08.03