如何将信号发送到在KDevelop中以调试模式启动的程序

时间:2012-11-26 15:11:56

标签: c++ signals kdevelop

我想分析一下我用KDevelop编写的程序。 我编译程序并用

启动它
  

右键单击CMake项目 - >调试为... - >原生申请

现在程序在KDevelop中运行,我可以在控制台上看到嵌入KDevelop的输出。 当我按 Ctrl + C “(SIGTERM)时,我的程序停止运行。当我在KDevelop外的控制台中运行程序时,我可以按它。

如何将信号“SIGTERM”发送到KDevelop内的嵌入式控制台?

作为一种解决方法,我可以启动 htop ,选择程序并从那里发送SIGTERM,虽然在KDevelop本身拥有所有功能会更好。

3 个答案:

答案 0 :(得分:1)

一种可能的解决方案是:

  • 右键单击CMake项目 - >调试为... - >原生申请。
  • 更改为" gdb" -Tab内部KDevelop。
  • 点击右上角的"暂停" -Icon以启用" gdb" -Tab
  • 的输入字段
  • 输入signal <Signal>,例如signal SIGTERM
  • 程序继续,它捕获发送的信号。

答案 1 :(得分:0)

使用kill命令向进程发送信号。 kill -l应该为您提供信号及其ID的列表。

例如,在FreeBSD上,SIGTERM信号为#15,如此输出所示:

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGEMT       8) SIGFPE       9) SIGKILL     10) SIGBUS
11) SIGSEGV     12) SIGSYS      13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGURG      17) SIGSTOP     18) SIGTSTP     19) SIGCONT     20) SIGCHLD
21) SIGTTIN     22) SIGTTOU     23) SIGIO       24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGINFO     30) SIGUSR1
31) SIGUSR2

所以要将SIGTERM发送到我的进程,我查找进程ID,然后发送一个kill命令,如下所示:

kill -15 <process ID>

答案 2 :(得分:0)

您可以从KDevelop内部发送SIGINT:

运行 - &gt;中断

但是你不能发送任何其他信号。

如果您认为这是一个有用的功能,请在bugs.kde.org上创建一个愿望请求 - 最终包含一个附加补丁:D