【发布时间】:2013-06-28 14:30:12
【问题描述】:
在通过void (*sa_sigaction)(int, siginfo_t *, void *); 安装的信号处理程序中,如何判断 SIGILL 是源自非法指令还是源自发送 SIGILL 的某个进程?我查看了 siginfo_t 的si_pid,但这似乎是未初始化的,以防遇到非法指令,因此我无法根据它做出决定。 - 当然,我正在寻找一种更简单且可移植的解决方案,而不是阅读si_addr 处的指令代码并试图确定它是否合法。
【问题讨论】:
-
你为什么要这样做?
-
... 为了找到 Xenomai 线程终止的原因,其中 gdb 说“程序以信号 4 终止,非法指令。”,但在 $pc
有一个合法的核心文件中的分支指令。