2016-08-12 192 views
1

我是C编程新手,目前我正在开发一个简单的Win32控制台应用程序来帮助我学习。我在工作时这样做,他们为我提供了Visual Studio 2010.我们的工作计算机受到限制,因此我无法安装其他软件或进行需要管理员访问的更改。VS2010 - 使用cmd.exe调试win32控制台应用程序

在试图调试我的程序时,我发现有几个选项可用。下面的两个都是我想用:

  1. 开始调试
  2. 不开始调试

当我拿起选项1,应用程序直接启动(如,如果我双击了.exe文件)。但是,当我选择选项2时,应用程序通过cmd.exe间接启动。此外,在应用程序通常会终止的地方,会出现一行文字,显示'按任意键继续'。这将保持控制台打开,直到我按另一个键。

有没有办法在Visual Studio中修改设置,使选项1的行为与选项2相同但仍然允许调试?如果没有,是否还有其他解决方法可以完成同样的任务,并且可以使用单个键盘快捷键启动?

+0

什么是“直接”? –

+0

@EugeneSh。据我所知,似乎VS正在通过直接调用它来加载可执行文件,而不是使用Windows命令提示符(cmd.exe)来加载它。我很抱歉,如果我的术语有误导性和/或不正确的,但我在应用程序开发方面的经验很少。 –

+0

如果在您的程序退出之前按'任意键继续'提示符是您所需的全部内容,那么@ BenVoigt对我的答案的评论实际上是对您的问题的回答 – mvidelgauz

回答

1

不幸的是,我不知道任何“开箱即用”(请参阅​​下面的替代方法)以单键盘命令完成同样的事情,但以下是我认为可以帮助您的方法:

  1. 调用MessageBox_getch或别的东西添加到您的代码在这一点暂停执行,直到用户点击一个按钮或按使用第二个方法(“不调试”)
  2. 关键
  3. 启动应用程序
  4. 当您在步骤1中看到消息框或用户输入提示时,请不要继续
  5. 在Visual Studio菜单下的“Debug”调用“Attach to process ...”。
  6. 在当前正在运行的进程列表中查找您的应用程序。您可以通过消息框标题或用户提示或通过进程ID来识别它。选择该进程并单击“附加”按钮
  7. 在您将看到VS连接到该进程后,切换到应用程序(cmd窗口),然后单击按钮或按一个键继续执行。从这一点你的应用程序在调试器下

运行如果你真的需要一个简单的命令做这一切,我认为你需要编写自己的VS macro。如果你需要这种宏的帮助,很可能需要成为一个不同的问题。

[编辑]

你在你的问题时说,你是VS2010,所以下面可能是不适合你的选择,但以防万一,我会在这里吧:如果你是 使用VS2013或(2015)您可以使用 Child Process Debugging Power Toolanother link),这将允许您指定cmd $(TargetPath)作为“命令”,然后使用第一个选项调试cmd连同其子进程,这将发生在您的进程(截图来自VS2012,但在VS版本中存在相同的选项)

enter image description here

+0

谢谢您的信息。我测试了你的一步一步的方法,并且允许我在程序加载后连接调试器。但是,我希望找到一种解决方案,每次都不需要多个步骤并暂停程序。我会对VS宏进行一些研究。 –

+0

基于[这个问题]给出的答案(http://stackoverflow.com/questions/21762194/macros-dont-run-in-visual-studio-2010),VS宏不会是我的选择。 –

+0

那么如何超越宏到[VS extenstions](https://code.visualstudio.com/docs/extensions/overview)? – mvidelgauz

相关问题