使用Console2进行Visual Studio调试?

问题描述:

有没有办法使用流行的Console2 cmd.exe替代Visual Studio调试?换句话说,当我在VS下调试控制台应用程序时,我希望它使用Console2而不是cmd.exe。使用Console2进行Visual Studio调试?

+3

你有没有找到这个问题的答案? – 2011-05-19 19:57:16

+0

类似的问题(回答):[使用Visual Studio Console应用程序调试的自定义控制台](http://stackoverflow.com/a/12605997/1405560) – Maximus 2014-03-24 07:18:53

有趣的问题。我看着它,有一些选择,但没有一个是漂亮的。

Console.exe带有参数,因此可以使用特定选项卡启动它并执行任意进程。但是,此过程将始终在其自己的cmd.exe中运行;例如,如果您的程序是c:\ my.exe,并且您启动控制台为console.exe -t tabname -r c:\myexe Console2内部调用CreateProcess(... cmd.exe c:\my.exe ...),因此您甚至无法看到my.exe的输出。这很容易解决:启动它为console.exe -t tabname -r "/k c:\myexe":/ k开关使cmd.exe保持活动状态,您可以看到您的程序的标准输出。 (我查看了源代码,但无法找到一种方法将“标签”附加到当前正在运行的控制台实例,因此启动参数将始终创建一个新实例,不确定这是您正在寻找的内容吗?

您可以轻松地修改项目的调试属性,以反映上述:

Command: /path/to/console.exe 
Command Arguments: -t tabname -r "/k $(TargetPath)" 

当从内VS开始你的exe文件,就会启动EXE witin控制台会话但是调试将无法正常工作,VS会尝试。调试console.exe,而不是my.exe,因为现在是一个不同的过程。将DebugBreak();作为你的exe的main()的第一行会解决这个问题,因为它会给你提供调试exe的选项。总而言之,这可能有点太麻烦来实现你想要的东西,但我不认为有另一种方式:控制台总是产生一个新的进程,所以调试它的唯一方法是在调试器附加到它之后该过程开始。

Scott Hanselman blogged about this

他建议使用此值控制台设置>标签>首页>壳牌

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 

可悲的是对我来说,这似乎并不为Visual Studio Express的2010,它缺乏一个vcvarsall工作。蝙蝠文件。