C gdb:退出程序而不退出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-
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?;)