如何将信号发送到在 KDevelop 中以调试模式启动的程序
Howto send signals to a program started in Debug mode in KDevelop
我想分析一个我用KDevelop编写的程序。我编译程序并启动它
右键单击 CMake 项目 -> 调试为... ->本机应用程序
现在程序在KDevelop中运行,我可以在嵌入KDevelop的控制台上看到输出。当我按 Ctrl+C"(SIGTERM)时,我的程序停止运行。当我在 KDevelop 之外的控制台中运行程序时,我可以按下它。
如何将信号"SIGTERM"发送到KDevelop内部的嵌入式控制台?
作为一种解决方法,我可以启动 htop,选择程序并从那里发送 SIGTERM,它工作正常,尽管在 KDevelop 本身中拥有所有功能会更好。
一种可能的解决方案是:
- 右键单击 CMake 项目 ->调试为... ->本机应用程序。
- 更改为 KDevelop 中的"gdb"-选项卡。
- 点击右上角的"暂停"图标以启用"gdb"选项卡的输入字段
- 类型
signal <Signal>
,例如signal SIGTERM
- 程序继续并捕获发送的信号。
使用 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>
您可以从 KDevelop 内部发送 SIGINT:
运行 -> 中断
但是,您无法发送任何其他信号。
如果您认为这是一个有用的功能,请在 bugs.kde.org 上创建一个愿望请求 - 最终包括附加的补丁:D
相关文章:
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- Visual Studio 发布模式阻止在调试模式下执行的代码.使用 WinHTTP 和多线程
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- 使用Qt Creator在调试模式下编译一段代码
- 在调试模式下,所有程序都运行良好,但在发布模式下,我在cudaMalloc操作中出错
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 在调试模式下编译时qrc_resource.cpp错误
- 如何在调试模式下通过终端运行可执行的 c++?
- 在Visual Studio 2017上无法使用调试模式x64进行OpenCV3.2编译
- 在调试模式下使用英特尔 TBB
- 我的代码在发布模式下不起作用,而在Qt的调试模式下工作
- SCANF 在 Eclipse 中不接受调试模式下的输入?
- 为什么我的 UWP 游戏在发布时比在调试模式下慢
- 未处于调试模式时正常启动测试
- 我如何调用在调试模式下具有主要的程序或代码
- 在CLION中调试模式和运行模式之间的怪异结果
- 调试模式下的dlib静态lib错误
- ifstream读取二进制文件在发行模式下工作,但在调试模式下不使用