【发布时间】:2010-10-12 22:00:16
【问题描述】:
我有一个调试器,我要从 linux 移植到 *bsd。目前,我正在开发 OpenBSD 版本。
在某些情况下,我想知道所传递信号的详细信息。例如,假设交付了一个 SIGSEGV,我想知道错误地址是什么,如果可能的话,是读取还是写入。
另一个例子是如果我收到一个陷阱,它是一个单步事件吗?或者可能是一个 INT3 操作码。
在 linux 上,我通过调用获取此信息:
ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);
这很有效,因为它让我可以访问几乎所有我可能想知道的关于信号的信息。 OpenBSD 上似乎没有等价物。我查看了可以使用 KVM API 访问的 kinfo_proc 和 kinfo_proc2,但没有什么能像 siginfo_t 那样拥有相同类型的信息。获取此信息的正确方法是什么?
【问题讨论】: