Получение трассировки стека в Android - PullRequest
0 голосов
/ 16 апреля 2019

Я добавляю опцию 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...