ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • addr2line
    개발 2018. 12. 22. 12:58

    개발하다보면 에러가 발생한 물리 주소만 떡하니 알려주고 바이너리의 어떤 함수에서 죽었는지는 알려주지 않는 로그 메시지를 보게될 때가 있다. 이런 경우에는 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

    댓글

Designed by Tistory.