Na desce s ARMem mi běží Linux a občas se mi objeví chyba segmentace, tak bych si chtěl pořídit její výpis. Na PC mi funguje toto:#include <execinfo.h>
void show_stackframe() {
void *trace[16];
char **messages = (char **) NULL;
int i, trace_size = 0;
trace_size = backtrace(trace, 16);
messages = backtrace_symbols(trace, trace_size);
printf("[bt] Execution path:\n");
for (i = 0; i < trace_size; ++i)
printf("[bt] %s\n", messages[i]);
}
Vypišou se mi názvy funkcí s posledními spuštěnými řádky, které vedly až k výpisu, ale na té desce to vypíše pouze:[bt] Execution path:
[bt] /lib/ld-linux.so.3 [0x40025000]
Pro ARM kompiluju pomocí Sourcery_CodeBench_Lite_for_ARM_GNU_Linux ve Windows XP arm-none-linux-gnueabi-gcc -c -Wall -Werror -pg -g -rdynamic -funwind-tables -I./inc -I./include ... -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -D_LINUX_ -o main.o main.c
arm-none-linux-gnueabi-gcc -pg -rdynamic -funwind-tables -o prog2 main.o graphic.o ... -lpthread -lrt -lfreetype -lm
Co dělám špatně?