함수를 호출하는 함수 이름 출력하기
http://stackoverflow.com/questions/6251787/how-do-i-get-the-name-of-the-calling-function
함수가 어느 함수로부터 호출되는지 그 시점을 알고 싶었지만 디버깅 모드나 break point를 사용할 수 없는 상황이었습니다. 비교적 구조가 간단하고 아주 빈번하게 호출되는 함수는 아니기 때문에 간단한 수정으로 증상을 확인하는 방법을 택할 수 있었습니다.
원래 함수가 아래와 같이 생겼다면,
1 2 3 |
int B(int x){ ... } |
아래와 같이 고쳐줍니다.
1 2 3 4 5 6 |
int _B(int x, char *caller){ printf("caller is %s\n", caller); ... } #define B(x) _B((x), __func__) |
__func__ 매크로를 이용하여 B함수를 호출하고 있는 함수의 이름을 인수로 넘겨주어 이를 출력하도록 합니다. 간단하게 적용할 수 있지만 단점이라면 기존 함수 B의 선언을 고쳐야 한다는 점 정도가 되겠네요.