1
我有一个调试器,我正在从linux移植到* bsd。目前,我正在研究OpenBSD版本。ptrace如何在调试器中获得信号细节?
在某些情况下,我想知道已交付信号的细节。例如,假设SIGSEGV已经交付,我想知道错误地址是什么,如果可能的话,如果它是读取或写入。
另一个例子是,如果我收到一个陷阱,是单步事件吗?或者可能是一个INT3操作码。
在Linux上,我得到通过调用得到这样的信息:
ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);
这个伟大的工程,因为它让我有机会到刚才的一切我可能想了解的信号。在OpenBSD上似乎没有相同之处。我看了一下kinfo_proc
和kinfo_proc2
,它们可以通过KVM API访问,但没有任何信息真正跳出来,因为它与siginfo_t具有相同类型的信息。得到这些信息的正确方法是什么?