在LLDB中发送信号

时间:2014-10-12 21:30:54

标签: signals lldb

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

2 个答案:

答案 0 :(得分:5)

查看process signalprocess 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);
}

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

(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

我将在另一个窗口中看到signal handled输出,表明我的信号处理程序已被调用。

答案 1 :(得分:1)

尝试process signal <signal>