lldb не может напрямую вызвать ваш обработчик сигнала.На MacOS не существует способа «signal.h», чтобы один процесс отправлял сигнал, включая целевой поток, и любую другую информацию другому процессу.Все варианты pthread_kill являются только локальными процессами.
Вместо этого отладчик перехватывает сигнал до его фактической доставки, получая исключение Маха EXC_SOFTWARE / EXC_SOFT_SIGNAL.Затем при возобновлении он сообщает ядру распространять сигнал с помощью системной утилиты ptrace - используя «PT_THUPDATE».Это определение находится в usr / include / sys / ptrace.h.С PT_THUPDATE вы отправляете номер сигнала, и ядро обрабатывает его, как если бы исходный сигнал был подавлен, а новый сигнал повышен.
Этот процесс с потерями.Первоначально lldb получает только номер сигнала и целевой поток, а не любую другую информацию.Кроме того, PT_THUPDATE API принимает только идентификатор потока и номер сигнала.Таким образом, у нас нет возможности пересылать больше информации, даже если бы она у нас была.
Ядро должно было бы хранить всю остальную информацию вокруг, и когда lldb перенаправляет сигнал, копирует его или предоставляет API для lldb для выборкии отправьте эту информацию вместе с сигналом.