C gdb:退出程序而不退出gdb

C gdb:退出程序而不退出gdb,c,gdb,C,Gdb,我正在用gdb调试一个程序。首先我加载可执行文件,然后我继续运行程序。有时我想中断程序的执行,所以我会执行Ctrl+C 我的问题是,这关闭了我的程序和gdb。如何在不退出gdb的情况下退出程序?首先运行程序(不是从gdb内部运行),然后查找其pid 在另一个shell中,运行gdb--pid=您是否尝试从gdb内部使用kill?看起来在Windows下,您必须使用Ctrl-Break而不是Ctrl-C。看这个 摘录: MS Windows程序调用SetConsoleMode关闭特殊设置 键入C-

我正在用gdb调试一个程序。首先我加载可执行文件,然后我继续运行程序。有时我想中断程序的执行,所以我会执行
Ctrl+C

我的问题是,这关闭了我的程序和gdb。如何在不退出gdb的情况下退出程序?

首先运行程序(不是从gdb内部运行),然后查找其pid


在另一个shell中,运行
gdb--pid=您是否尝试从gdb内部使用
kill

看起来在Windows下,您必须使用
Ctrl-Break
而不是
Ctrl-C
。看这个

摘录:

MS Windows程序调用SetConsoleMode关闭特殊设置 键入C-C不能中断“Ctrl-C”按键的含义。 因此,MS Windows上的gdb支持将C作为 备用中断键序列,可用于中断 即使忽略C-C,也要调试对象


使用ctrl-c中断应用程序。然后从GDB提示符运行“signal SIGINT”,它会将此信号发送到应用程序,使其执行与从命令行执行ctrl-c时通常执行的操作相同的操作。

正如Manlio所说,在这种情况下,您需要的是
kill
,它将用一条消息提示您:

是否终止正在调试的程序?(y或n)

如果您键入
help running
,您将看到执行常见操作所需的所有重要命令,例如停止当前程序的执行。这些应该是您正在运行的程序的所有命令,而不是gdb


这是不应该发生的;Ctrl-C应该只是中断(而不是终止)您的程序,而且它绝对不应该终止gdb。你在用什么环境?我在用Cygwin。奇怪,我的程序在远程主机上运行。(手臂芯片)是的。但是在
continue
之后,我不会运行gdb命令提示符,所以什么也不会发生。@特洛伊木马说,Ctrl-C应该中断你的程序,这样你就可以再次使用gdb控制台了。但是,请尝试使用
start
启动程序。执行应在
main
函数开始时停止。然后使用
kill
终止您的程序。当我尝试
start
时,我得到“未加载符号表。请使用“file”命令。”谢谢。这仍将退出GDB。现在,当它退出时,它写着“退出(核心转储)”@Randomblue哦,天哪,似乎不是很高兴,是吗。我不知道该建议什么,除了改用微软编译器(Windows SDK免费提供)之外。@Randomblue你是从
cmd
还是
sh
控制台运行这些东西的?调试的程序是Cygwin还是Win32本机程序?(记录:是
gdb
Cygwin还是Win32?;)