一个测试程序(测试段溢出后回溯调试功能),在Ubuntu上运行出错的时候回溯正常,但在开发板上运行的时候出错backtrace函数返回值为0。 请问这是什么情况呢?
这是测试代码
#include <execinfo.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void
print_trace (int signo)
{
void *array[10];
size_t size;
char **strings;
size_t i;
char a[10];
size = backtrace (array, 10);
strings = backtrace_symbols (array, size);
printf ("Obtained %zd stack frames.\n", size);
for (i = 0; i < size; i++)
printf ("%s\n", strings[i]);
free (strings);
}
/* A dummy function to make the backtrace more interesting.
*/
void dummy_function (void)
{
*((char *)0)=0x999;
}
int
main (void)
{
signal(SIGSEGV,print_trace);
dummy_function ();
return 0;
}
gcc -rdynamic -g test.c -o test 编译指令
arm-linux-gcc -rdynamic -g test.c -o test
|