2010-11-03 11 views
30

Esiste un modo per utilizzare la famosa sostituzione di Console2 cmd.exe per il debug di Visual Studio? In altre parole, quando eseguo il debug di un'app console in VS, voglio che utilizzi Console2 anziché cmd.exe.Utilizzare Console2 per il debug di Visual Studio?

+3

Hai mai trovato una risposta a questa domanda? –

+0

Domanda simile (risposta): [Usa console personalizzata per debug dell'applicazione Console di Visual Studio] (http://stackoverflow.com/a/12605997/1405560) – Maximus

risposta

8

Interessante domanda. L'ho esaminato, ci sono alcune opzioni ma nessuna è carina.

Console.exe accetta gli argomenti, quindi è possibile avviarlo con una scheda specifica ed eseguire un processo arbitrario. Tuttavia, questo processo verrà sempre eseguito all'interno del proprio cmd.exe; per esempio se il tuo programma è c: \ my.exe e lanci Console come console.exe -t tabname -r c:\myexe Console2 chiama internamente CreateProcess(... cmd.exe c:\my.exe ...), di conseguenza non puoi nemmeno vedere l'output di my.exe. Questo è facilmente risolvibile però: lanciarlo come console.exe -t tabname -r "/k c:\myexe": l'opzione/k rende attivo il cmd.exe e puoi vedere l'output standard del tuo programma. (Ho cercato la fonte ma non ho trovato un modo per allegare una scheda a un'istanza di Console attualmente in esecuzione, quindi l'avvio con argomenti creerà sempre una nuova istanza, non è sicuro che questo sia quello che stai cercando?

si può facilmente modificare le proprietà di debug del progetto in modo da riflettere quanto sopra:

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

Quando si avvia il tuo exe dall'interno VS, che lancerà il vostro exe witin una sessione della console Tuttavia il debug non funzionerà come tenterà VS. per eseguire il debug di console.exe, non di my.exe dato che ora è un processo diverso. Mettere un DebugBreak(); come prima riga nel main del tuo exe() risolverà questo problema, poiché ti presenterà l'opzione per eseguire il debug del tuo exe.tutto questo può essere un po 'troppo complicato per ottenere quello che vuoi, ma non credo che ci sia un altro modo: Console genera sempre un nuovo processo, quindi l'unico modo per farlo è quello di allegare il debugger ad esso dopo questo processo è iniziato.

0

Scott Hanselman blogged about this.

Egli suggerisce di usare questo valore per Impostazioni console> schede> principale> Shell:

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

Purtroppo per me, questo non sembra funzionare per Visual Studio Express 2010, che manca di un vcvarsall . bat file.

Problemi correlati