2010-11-03 110 views
30

有沒有辦法使用流行的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

回答

8

有趣的問題。我看着它,有一些選擇,但沒有一個是漂亮的。

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的選項。總而言之,這可能有點太麻煩來實現你想要的東西,但我不認爲有另一種方式:控制檯總是產生一個新的進程,所以調試它的唯一方法是在調試器附加到它之後該過程開始。

0

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工作。蝙蝠文件。

相關問題