在LLDB中发送信号

ski*_*tle 4 signals lldb

我正在使用LLDB作为独立的调试器,我想知道是否有一种方法可以在LLDB中发送信号,就像在GDB中一样(即信号SIGINT)

Jas*_*nda 5

看看process signal和process handle命令.例如,有一个类似的程序

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handler (int in)
{
    puts ("signal handled");
}

int main()
{
    signal (SIGUSR1, handler);
    while (1) 
        sleep (1);
}
Run Code Online (Sandbox Code Playgroud)

如果我在另一个窗口中用lldb附加到这个(所以我可以在进程运行时键入lldb命令 - 如果我在lldb下运行该程序,程序运行时的输入/输出将转到程序,而不是lldb),我可以告诉lldb在发送SIGUSR1信号时不会停止进程执行(默认是停止执行所以你需要continue再次执行)并且我可以发送信号.例如

(lldb) pro handle -s false SIGUSR1
NAME        PASS   STOP   NOTIFY
==========  =====  =====  ======
SIGUSR1     true   false  true 
(lldb) pro signal SIGUSR1
Process 6628 stopped and restarted: thread 1 received signal: SIGUSR1
Run Code Online (Sandbox Code Playgroud)

我会signal handled在另一个窗口看到输出,显示我的信号处理程序被调用.