Я добавляю опцию backtrace
(которая будет вызываться при сбое приложения) в мое приложение C ++, разработанное с использованием Qt Framework, и я использую код из этого примера: https://github.com/JPNaude/dev_notes/wiki/Produce-a-stacktrace-when-something-goes-wrong-in-your-application, вот источник
void crit_err_hdlr(int sig_num, siginfo_t * info, void * ucontext) {
void * array[50];
void * caller_address;
char ** messages;
int size, i;
sig_ucontext_t * uc;
uc = (sig_ucontext_t *)ucontext;
/* Get the address at the time the signal was raised */
#if defined(__i386__) // gcc specific
caller_address = (void *) uc->uc_mcontext.eip; // EIP: x86 specific
#elif defined(__x86_64__) // gcc specific
caller_address = (void *) uc->uc_mcontext.rip; // RIP: x86_64 specific
#else
#error Unsupported architecture. // TODO: Add support for other arch.
#endif
....
Как видите, этот пример неполон, он не соответствует архитектуре ARM. Что будет caller_address
для ARM 32 бита и ARM 64 бита? Мне нужно это, чтобы сделать сборку Android.