我正在使用LLDB作为独立调试器,我想知道是否有办法在LLDB中发送信号,就像在GDB中一样(即信号SIGINT)
答案 0 :(得分: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);
}
如果我在另一个窗口中使用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>
。