在Android中,仿生加载程序为statrtup上的每个进程设置一个默认的信号处理程序:
void debugger_init() { struct sigaction act; memset(&act,sizeof(act)); act.sa_sigaction = debugger_signal_handler; act.sa_flags = SA_RESTART | SA_SIGINFO; sigemptyset(&act.sa_mask); sigaction(SIGILL,&act,NULL); sigaction(SIGABRT,NULL); sigaction(SIGBUS,NULL); sigaction(SIGFPE,NULL); sigaction(SIGSEGV,NULL); sigaction(SIGSTKFLT,NULL); sigaction(SIGPIPE,NULL); }
我想将其设置回它的默认值,这意味着我想忽略这些信号,并且默认处理程序将发生(CORE DUMP)
我如何恢复执行的操作? 我想忽略所有这些,就好像上面的函数从未被调用过一样
检查备用信号堆栈(分配它的不同方法)
读信号(7) , 信号(2)和信号(2) 。
你可以打电话
signal(SIGILL,SIG_DFL); signal(SIGABRT,SIG_DFL);
等等你的main (这是动态加载后进入)
您也可以使用sigaction将sa_handler设置为SIG_DFL
当然,如果你想在你的main之前默认处理这些信号,比如在一些静态的构造函数中,情况会更加棘手。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。