代码中用backtrace去捕获堆栈信息,并打印出来,发现某些死机只打印了两行堆栈信息,根本打印不出来具体是哪个地方崩溃。有没有人知道什么情况下会捕获不到崩溃的堆栈信息呢?
const int len = 64;
void *func[len];
size_t size;
int i;
char **error_strings;
signal(signum,SIG_DFL);
size=backtrace(func,len);
error_strings=(char**)backtrace_symbols(func,size);
__android_log_print(ANDROID_LOG_DEBUG, "ERROR_CATCH_DEBUG", "=======System error, Stack trace: size = %d==========\n", size);
for(i=0;i<size;++i) __android_log_print(ANDROID_LOG_DEBUG, "ERROR_CATCH_DEBUG", "##%03d %s \n",i,error_strings[i]);
free(error_strings);
const int len = 64;
void *func[len];
size_t size;
int i;
char **error_strings;
signal(signum,SIG_DFL);
size=backtrace(func,len);
error_strings=(char**)backtrace_symbols(func,size);
__android_log_print(ANDROID_LOG_DEBUG, "ERROR_CATCH_DEBUG", "=======System error, Stack trace: size = %d==========\n", size);
for(i=0;i<size;++i) __android_log_print(ANDROID_LOG_DEBUG, "ERROR_CATCH_DEBUG", "##%03d %s \n",i,error_strings[i]);
free(error_strings);


