LLDB中的发送信号

问题描述 投票:4回答:2

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

signals lldb
2个回答
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发出信号),并且可以发送该信号。例如

(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输出,表明我的信号处理程序已被调用。

© www.soinside.com 2019 - 2024. All rights reserved.