我正在使用google breakpad捕获导致SIGSEGV信号的错误操作。我希望这个过程能够继续,但是由dalvik jvm在android中完成。我如何从完成Android的过程中恢复过程?
答案 0 :(得分:1)
您是否尝试过this?
#include <signal.h>
#include <stdio.h>
#define __USE_GNU
#include <ucontext.h>
int *p = NULL;
int n = 100;
void sighandler(int signo, siginfo_t *si, ucontext_t* context)
{
printf("Handler executed for signal %d\n", signo);
context->uc_mcontext.gregs[REG_RAX] = &n;
}
_your_amazing_method (jenv *env, jobject obj, _your_args)
{
do_some_dirty_stuff();
signal(SIGSEGV, sighandler);
printf("%d\n", *p); // ... movl (%rax), %esi ...
return 0;
}