为什么Code::Blocks的“构建->中止”无法终止我的正在运行的C++程序?

3
我正在Windows 7上使用Code::Blocks 12.11。我写了一些小程序用于学习,它们似乎没有包含任何无限循环,但是在某些情况下,当我在Build->Run之后必须使用Build->Abort时,它并不能起作用。
在最近的一个案例中,在屏幕底部的“Logs & others”窗口的“Build log”选项卡中显示以下内容。
检查是否存在:C:\CodeBlocks\Test_Cpp11\bin\Debug\Test_Cpp11.exe 执行: "C:\Program Files (x86)\CodeBlocks/cb_console_runner.exe" "C:\CodeBlocks\Test_Cpp11\bin\Debug\Test_Cpp11.exe"(位于C:\CodeBlocks\Test_Cpp11中)
我退出了Code::Blocks,重新打开项目,然后立即运行程序,它可以正常运行。
编辑:我找到了问题所在。如果“控制台窗口”——用于显示cout语句的窗口仍然打开,则在关闭该窗口之前,您将无法使用灰色的Build->Run和Build->Build选项。我认为我需要在那个点上执行Build->Abort是不正确的。正如下面的答案所指出的那样,那不会中止正在运行的项目进程,而只会中止可能正在运行的构建/编译过程。
3个回答

6

当上一次执行未能正确终止时,就会出现这种情况。 在Windows上,打开任务管理器并终止包含上一次运行输出的命令行进程。这样做将使构建/运行图标还原为绿色,并可用。


你知道用于终止命令行进程的命令是什么吗? - Yu Deng
2
@YuDeng 我认为这取决于项目/文件类型,但对于控制台应用程序,它被称为 cb_console_runner.exe - rovyko

3
要在调试过程中终止正在运行的进程,请单击调试工具栏上红色的“X”按钮。下图中命名为“停止调试”的按钮。

Code::Blocks debug toolbar

在 Code::Blocks 中,选择“构建”->“中止”菜单项将中止构建(制作或编译)您的项目,与终止正在运行的进程无关。希望这可以帮助您。


我查看了调试菜单,几乎所有项目都变灰了,包括“停止调试器”。 我刚刚进行了 Build->Run 来运行程序。感谢有关中止/运行进程的信息。 - Scooter
实际上,我刚刚发现我的错误,因为在成功运行后它又出现了。如果用于显示cout语句的输出窗口仍然打开,你就无法重新构建。所以一旦我关闭了它,我就能够再次构建或运行。 - Scooter
1
为了调试程序,您可以单击“调试”>>“开始”或按下F8键,这是启动调试的快捷方式。使用“构建”>>“运行”将作为独立进程运行程序,Code::Blocks将无法控制它。 - Rakesh Gopal
@Scooter 我认为我的答案已经添加到了你的问题中。你可以将我的答案标记为正确并关闭问题。 - Rakesh Gopal
这是错误的。构建中止按钮确实会终止正在运行的进程。它应该这样做,而且它也确实这样做了。然而,在我的当前版本中存在一个有点烦人的错误(可能已经在SVN中修复),它会导致控制台运行程序助手进程持续存在,从而防止您之后进行另一个构建或重建。 "停止调试"按钮与此无关。 - Damon
那么,如果不使用像任务管理器这样的单独工具,如何杀死控制台运行助手呢?如果这是一个漏洞,为什么在4年后C::B仍然存在呢? - Mark Jeronimus

0
当应用程序完成并从其main函数返回时,它会提示您“按任意键继续”。
一旦您这样做,这将中止启动的进程,并且构建按钮将不再变灰。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接