VS2010 - 使用 cmd.exe 调试 win32 控制台应用程序
VS2010 - Debug win32 console application using cmd.exe
我是 C 编程的新手,目前正在开发一个简单的 Win32 控制台应用程序来帮助我学习。我在工作中这样做,他们为我提供了 Visual Studio 2010。我们的工作计算机受到限制,因此我无法选择安装其他软件或进行需要管理员访问权限的更改。
在尝试调试我的程序时,我发现有几个选项可用。下面两个是我想用的:
- 开始调试
- 不调试就开始
当我选择选项 1 时,应用程序会直接启动(就像我双击 .exe 文件一样)。但是,当我选择选项 2 时,应用程序是通过 cmd.exe 间接启动的。此外,在应用程序正常终止的位置,会出现一行文本,上面写着 'Press any key to continue'。这会使控制台保持打开状态,直到我按下另一个键。
有没有办法修改 Visual Studio 中的设置,使选项 1 的行为与选项 2 相同,但仍允许调试?如果没有,是否有任何其他解决方法可以完成同样的事情并且可以通过单个键盘快捷键启动?
不幸的是,我不知道有任何 "out-of-the-box"(请参阅下面的备选方案)方法可以使用单个键盘命令完成相同的事情,但我认为以下内容可以帮助您:
- 在您的代码中添加对 MessageBox or _getch 或其他内容的调用以在此时暂停执行,直到用户单击按钮或按键
- 使用第二种方法启动您的应用程序("Without Debugging")
- 当您看到在步骤 1 中创建的消息框或用户输入提示时,请不要继续
- 在 Visual Studio 菜单下 "Debug" 调用 "Attach to process...".
- 在当前 运行 个进程的列表中找到您的应用程序。您可以通过消息框标题或用户提示或进程 ID 识别它。 Select 处理并单击 "Attach" 按钮
- 当你看到 VS 附加到该进程后,切换到应用程序 (cmd window) 并单击按钮或按任意键继续执行。从那时起,您的应用程序 运行 在 debugger
下
如果您真的需要一个命令来完成所有这些,我认为您需要编写自己的命令 VS macro。如果您需要有关此类宏的帮助,则可能需要一个不同的问题。
[编辑]
您在问题中说您使用的是 VS2010,因此以下内容可能不适合您,但以防万一我会在此处添加它:
如果您使用的是 VS2013 或 (2015),您可以使用
Child Process Debugging Power Tool (another link),这将允许您将 cmd $(TargetPath)
指定为 "command",然后使用您的第一个选项调试 cmd
及其 child 进程,这将发生成为您的流程(VS2012 的屏幕截图,但 VS 版本中存在相同的选项)
我是 C 编程的新手,目前正在开发一个简单的 Win32 控制台应用程序来帮助我学习。我在工作中这样做,他们为我提供了 Visual Studio 2010。我们的工作计算机受到限制,因此我无法选择安装其他软件或进行需要管理员访问权限的更改。
在尝试调试我的程序时,我发现有几个选项可用。下面两个是我想用的:
- 开始调试
- 不调试就开始
当我选择选项 1 时,应用程序会直接启动(就像我双击 .exe 文件一样)。但是,当我选择选项 2 时,应用程序是通过 cmd.exe 间接启动的。此外,在应用程序正常终止的位置,会出现一行文本,上面写着 'Press any key to continue'。这会使控制台保持打开状态,直到我按下另一个键。
有没有办法修改 Visual Studio 中的设置,使选项 1 的行为与选项 2 相同,但仍允许调试?如果没有,是否有任何其他解决方法可以完成同样的事情并且可以通过单个键盘快捷键启动?
不幸的是,我不知道有任何 "out-of-the-box"(请参阅下面的备选方案)方法可以使用单个键盘命令完成相同的事情,但我认为以下内容可以帮助您:
- 在您的代码中添加对 MessageBox or _getch 或其他内容的调用以在此时暂停执行,直到用户单击按钮或按键
- 使用第二种方法启动您的应用程序("Without Debugging")
- 当您看到在步骤 1 中创建的消息框或用户输入提示时,请不要继续
- 在 Visual Studio 菜单下 "Debug" 调用 "Attach to process...".
- 在当前 运行 个进程的列表中找到您的应用程序。您可以通过消息框标题或用户提示或进程 ID 识别它。 Select 处理并单击 "Attach" 按钮
- 当你看到 VS 附加到该进程后,切换到应用程序 (cmd window) 并单击按钮或按任意键继续执行。从那时起,您的应用程序 运行 在 debugger 下
如果您真的需要一个命令来完成所有这些,我认为您需要编写自己的命令 VS macro。如果您需要有关此类宏的帮助,则可能需要一个不同的问题。
[编辑]
您在问题中说您使用的是 VS2010,因此以下内容可能不适合您,但以防万一我会在此处添加它:
如果您使用的是 VS2013 或 (2015),您可以使用
Child Process Debugging Power Tool (another link),这将允许您将 cmd $(TargetPath)
指定为 "command",然后使用您的第一个选项调试 cmd
及其 child 进程,这将发生成为您的流程(VS2012 的屏幕截图,但 VS 版本中存在相同的选项)