我正在使用gdb调试程序。首先我load
我的可执行文件,然后我continue
运行程序。我有时想中断执行我的程序,所以我做Ctrl + C
。gdb:退出程序而不退出gdb
我的问题是,这一关都我的程序和gdb。我如何退出我的程序而不退出gdb?
我正在使用gdb调试程序。首先我load
我的可执行文件,然后我continue
运行程序。我有时想中断执行我的程序,所以我做Ctrl + C
。gdb:退出程序而不退出gdb
我的问题是,这一关都我的程序和gdb。我如何退出我的程序而不退出gdb?
看起来像在Windows下,你必须使用Ctrl-Break
不Ctrl-C
。看到这个page。
摘录:
调用SetConsoleMode关掉`按Ctrl-C”键击的特殊 意义不能通过键入C-C中断MS-Windows程序。 出于这个原因,GDB上MS-Windows支持C-作为 替代中断键序列,其可被用于中断 调试即使它忽略C-C。
谢谢。这仍然退出GDB。现在,当它退出它写道“退出(核心倾销)” – Randomblue 2012-03-12 14:54:48
@Randomblue哦blimey - 似乎并不很高兴。我不知道该怎么建议,除了切换到微软的编译器(他们可以免费使用Windows SDK)。 – trojanfoe 2012-03-12 14:55:57
@Randomblue你是从'cmd'还是'sh'控制台运行?被调试的程序Cygwin或Win32本机? (用于记录:是'gdb' Cygwin或Win32?;)) – 2015-08-06 22:18:27
首先运行程序(不是从gdb里面),然后找到它的pid。
在另一个shell,运行gdb --pid=<your program's pid>
。这将gdb附加到正在运行的程序。它停止程序的执行,因此问题c
继续。
现在退出你的程序,你的gdb会话将停留在那里。
我的程序正在远程主机上运行。 (一个ARM芯片。) – Randomblue 2012-03-12 14:40:32
您是否尝试过使用kill
从GDB里?
是的。但在'continue'之后,我没有运行到gdb命令提示符,因此没有任何反应。 – Randomblue 2012-03-12 14:41:47
@trojanfoe如何表示,Ctrl-C应该只是中断你的程序,这样你就可以再次使用gdb控制台。但是,尝试使用'start'启动你的程序。执行应该在main函数的开始处停止。然后用'kill'杀死你的程序。 – Saphrosit 2012-03-12 14:46:23
当我尝试'开始'我得到“没有符号表加载。使用”文件“命令。” – Randomblue 2012-03-12 14:53:08
使用Ctrl-C中断应用程序。然后在GDB提示符下运行“signal SIGINT”,它将把这个信号发送给你的应用程序,使它执行与你在命令行执行ctrl-c时通常做的相同的事情。
这不应该发生; Ctrl-C只是应该**中断**(不终止)你的程序,它绝对不应该终止gdb。你在使用什么环境? – trojanfoe 2012-03-12 14:37:12
我正在使用Cygwin。奇怪的。 – Randomblue 2012-03-12 14:39:54