Dl_info 로 backtrace debug 하는 방법에 대한 질문입니다.
아래 소스인 backtrace 기능을 추가할려고 하는데, 컴파일 애러가 납니다.
backtrace.c: In function 'print_walk_through':
backtrace.c:22: error: 'Dl_info' undeclared (first use in this function)
backtrace.c:22: error: (Each undeclared identifier is reported only once
backtrace.c:22: error: for each function it appears in.)
backtrace.c:22: error: expected ';' before 'dlip'
왜 위와 같은 애러가 나는지 모르겠습니다. dlfcn.h 에 해당 구조체가 정의 되어 있는데 왜 못찾는지 ... -,.-
혹시 backtrace 사용해보신 분이나 원인을 아시는 분은 알려주시면 감사하겠습니다.
kernel 2.6.24.7 버젼을 사용합니다.
#define _GUN_SOURCE
#define __USE_GNU
#include "stdio.h"
#include "dlfcn.h"
void **getEBP(int dummy)
{
void **ebp = (void**)&dummy - 2;
printf("\n");
return ebp;
}
void print_walk_through(void)
{
int dummy;
int frame = 0;
Dl_info dlip;
void **ebp = getEBP(dummy);
void **ret = NULL;
printf("Strack backtrace:\n");
while (*ebp)
{
ret = ebp + 1;
if (dladdr(*ret, &dlip) == 0)
break;
pirntf("Frame %d: [ebp=0x%08x] [ret=0x%08x] %s \n", frame++, *ebp, *ret, dlip.dli_sname);
ebp = (void**) (*ebp);
}
}
음 ..
먼저 오타가 보이네요...
-#define _GUN_SOURCE
+#define _GNU_SOURCE
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
죄송합니다. 오타였네요...-,.-
wp
댓글 달기