Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ndk 收到SIGSEGV后,如何从完成中恢复流程?_Android Ndk_Java Native Interface - Fatal编程技术网

Android ndk 收到SIGSEGV后,如何从完成中恢复流程?

Android ndk 收到SIGSEGV后,如何从完成中恢复流程?,android-ndk,java-native-interface,Android Ndk,Java Native Interface,我正在使用google breakpad捕获导致SIGSEGV信号的错误操作。我希望这个过程会继续,但它是由android中的dalvik jvm完成的。如何从android上完成恢复该过程?您尝试过吗 #包括 #包括 #定义、使用 #包括 int*p=NULL; int n=100; void signandler(int signo、siginfo\u t*si、ucontext\u t*context) { printf(“为信号%d执行的处理程序”,signo); context->uc

我正在使用google breakpad捕获导致SIGSEGV信号的错误操作。我希望这个过程会继续,但它是由android中的dalvik jvm完成的。如何从android上完成恢复该过程?

您尝试过吗

#包括
#包括
#定义、使用
#包括
int*p=NULL;
int n=100;
void signandler(int signo、siginfo\u t*si、ucontext\u t*context)
{
printf(“为信号%d执行的处理程序”,signo);
context->uc\u mcontext.gregs[REG\u RAX]=&n;
}
_你惊人的方法(jenv*env、jobject obj、你的参数)
{
做一些肮脏的事;
信号(SIGSEGV、sighandler);
printf(“%d\n”,*p);/…movl(%rax),%esi。。。
返回0;
}

重复?您发送的链接是关于breakpad的。此问题与breakpad无关
#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;
}