1
我有一個調試器,我正在從linux移植到* bsd。目前,我正在研究OpenBSD版本。ptrace如何在調試器中獲得信號細節?
在某些情況下,我想知道已交付信號的細節。例如,假設SIGSEGV已經交付,我想知道錯誤地址是什麼,如果可能的話,如果它是讀取或寫入。
另一個例子是,如果我收到一個陷阱,是單步事件嗎?或者可能是一個INT3操作碼。
在Linux上,我得到通過調用得到這樣的信息:
ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);
這個偉大的工程,因爲它讓我有機會到剛纔的一切我可能想了解的信號。在OpenBSD上似乎沒有相同之處。我看了一下kinfo_proc
和kinfo_proc2
,它們可以通過KVM API訪問,但沒有任何信息真正跳出來,因爲它與siginfo_t具有相同類型的信息。得到這些信息的正確方法是什麼?