2010-11-03 8 views
30

¿Hay alguna manera de utilizar el popular reemplazo Console2 cmd.exe para la depuración de Visual Studio? En otras palabras, cuando depuro una aplicación de consola en VS, quiero que use Console2 en lugar de cmd.exe.Utilice Console2 para la depuración de Visual Studio?

+3

¿Alguna vez encontró una respuesta a esta pregunta? –

+0

Pregunta similar (respondida): [Usar una consola personalizada para la depuración de aplicaciones de Visual Studio Console] (http://stackoverflow.com/a/12605997/1405560) – Maximus

Respuesta

8

pregunta interesante. Lo investigué, hay algunas opciones, pero ninguna es bonita.

Console.exe toma argumentos, por lo que es posible comenzar con una ficha específica y ejecutar un proceso arbitrario. Sin embargo, este proceso siempre se ejecutará dentro de su propio cmd.exe; por ejemplo, si su programa es c: \ my.exe y ejecuta Console como console.exe -t tabname -r c:\myexe Console2 internamente llama al CreateProcess(... cmd.exe c:\my.exe ...), como resultado, no puede ver la salida de my.exe. Sin embargo, esto se resuelve fácilmente: ejecútelo como console.exe -t tabname -r "/k c:\myexe": el modificador/k hace que el cmd.exe permanezca activo y puede ver la salida estándar de su programa. (Miré a través de la fuente, pero no pude encontrar una manera de 'conectar' en una ficha para una instancia de la consola actualmente en ejecución, por lo que el lanzamiento con argumentos siempre va a crear una nueva instancia, no está seguro de que esto es lo que busca?

puede modificar fácilmente las propiedades de depuración del proyecto para reflejar lo anterior:

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

al iniciar su exe desde dentro de VS, que lanzará su exe witin una sesión de consola sin embargo, la depuración no funcionará como VS va a tratar. console.exe a depurar, no my.exe ya que es ahora un proceso diferente. Poner una DebugBreak(); como primera línea en su exe principal() será una especie de solucionar esto, ya que le presentará la opción de depurar el exe. en todo, esto puede ser demasiado complicado para lograr lo que quieres, pero no creo que haya otra manera: la consola siempre genera un nuevo proceso, por lo que la única forma de depurarlo es adjuntar el depurador después ese proceso comenzó.

0

de Scott Hanselman blogged about this.

Se sugiere el uso de este valor para Configuración de la consola> pestañas> principal> Shell:

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

Por desgracia para mí, esto no parece trabajar para Visual Studio Express 2010, que carece de un vcvarsall . bate archivo.

Cuestiones relacionadas