0

我想分析一个我用 KDevelop 编写的程序。我编译程序并启动它

右键单击 CMake 项目 -> 调试为... -> 本机应用程序

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

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

作为一种解决方法,我可以启动htop,选择程序并从那里发送一个 SIGTERM ,它工作正常,尽管在 KDevelop 本身中拥有所有功能会更好。

4

3 回答 3

1

一种可能的解决方案是:

  • 右键单击 CMake 项目 -> 调试为... -> 本机应用程序。
  • 更改为 KDevelop 中的“gdb”-Tab。
  • 点击右上角的“暂停”-图标以启用“gdb”-Tab的输入字段
  • 类型signal <Signal>,例如signal SIGTERM
  • 程序继续并捕获发送的信号。
于 2012-11-28T11:21:46.377 回答
0

您可以从 KDevelop 内部发送 SIGINT:

运行 -> 中断

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

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

于 2012-11-27T06:56:52.707 回答
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>
于 2012-11-26T15:39:48.073 回答