捕获MacOS驱动程序中的SIGKILL
我目前正在调试我的守护进程,该进程可能由于SIGKILL而死亡 我希望捕获用于我的进程的信号,并添加该进程获得的打印输出 我知道SIGKILL不能在进程级信号处理程序中捕获,所以我决定使用kext 我查看了xnu源代码,发现捕获MacOS驱动程序中的SIGKILL,macos,kernel,signals,kill-process,xnu,Macos,Kernel,Signals,Kill Process,Xnu,我目前正在调试我的守护进程,该进程可能由于SIGKILL而死亡 我希望捕获用于我的进程的信号,并添加该进程获得的打印输出 我知道SIGKILL不能在进程级信号处理程序中捕获,所以我决定使用kext 我查看了xnu源代码,发现psignal是将信号传递给目标进程的方法。然而,我尝试使用trampoline来修补它,但是这个方法只调用另一个名为psignal_internal的静态方法,它是静态的,并且可能通过编译器优化来消除 也许还有其他方法可以获得某种机制,有助于捕获sigkill事件,并在这种
psignal
是将信号传递给目标进程的方法。然而,我尝试使用trampoline来修补它,但是这个方法只调用另一个名为psignal_internal
的静态方法,它是静态的,并且可能通过编译器优化来消除
也许还有其他方法可以获得某种机制,有助于捕获sigkill事件,并在这种情况下提供设置适当回调函数的选项
谢谢您是否为此调查过使用dtrace?我不确定它是否有助于捕捉信号,但它肯定可以捕捉堆栈跟踪。