使用Console2进行Visual Studio调试?

30

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


3
你是否曾找到这个问题的答案? - Dmitri Nesteruk
2个回答

8
有趣的问题。我研究了一下,发现有一些选项,但都不太好。
Console.exe接受参数,因此可以使用特定标签启动它并执行任意进程。然而,这个进程总是在它自己的cmd.exe中运行;例如,如果您的程序是c:\my.exe,并且您启动Console为“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保持活动状态,您可以看到程序的标准输出。(我查看了源代码,但找不到一种“附加”选项来将一个选项卡连接到当前正在运行的Console实例上,因此使用参数启动将始终创建一个新实例,不确定这是否符合您的要求?)
您可以轻松修改项目的调试属性以反映上述内容:
Command: /path/to/console.exe
Command Arguments: -t tabname -r "/k $(TargetPath)"

当你在VS中启动exe时,它会在控制台会话中启动你的exe。然而,调试将无法正常工作,因为VS将尝试调试console.exe,而不是my.exe,因为那是一个不同的进程。在你的exe的main()函数的第一行放置DebugBreak();可以解决这个问题,因为它将提供给你调试你的exe的选项。总的来说,这可能有点麻烦,但我认为没有其他方法:控制台总是会生成一个新进程,所以唯一的方法是在该进程启动后将调试器附加到它上面。


0

Scott Hanselman 博客中提到了这个

他建议在控制台设置 > 标签 > 主要 > Shell中使用这个值:

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

很遗憾,这对于Visual Studio Express 2010来说似乎不起作用,因为它缺少一个vcvarsall.bat文件。

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