visual studio 2010 - ver - Use una consola personalizada para la depuración de aplicaciones de Visual Studio Console
view console visual studio 2017 (2)
Algunas ideas:
Simplemente inicie su programa en ConEmu directamente, y luego elija Adjuntar al proceso desde el menú Depurar en Visual Studio. Puede agregar un retraso al comienzo de su programa para darle tiempo para adjuntarlo. Esto es un poco doloroso si tienes que hacer esto una y otra vez, pero a menudo es útil para este tipo de situaciones.
Agregue un
__debugbreak();
declaración al comienzo de su programa (quizás dentro de un bloque#ifndef NDEBUG
). Comience su programa directamente desde ConEmu. Utilice la función JIT de Visual Studio para conectarse cuando se produce el error de depuración y continúe depurando desde allí.
¿Es posible configurar Visual Studio para usar una consola no estándar al depurar una aplicación de consola?
No estoy seguro de cuál es la consola predeterminada, se parece a cmd.exe
. Realmente me encantaría que mi aplicación de consola se ejecute en ConEmu cuando depuro.
Para que quede claro, quiero hacer clic en "Iniciar la depuración" y el proceso debería realizarse exactamente como siempre, pero en lugar de abrir una consola cmd.exe
, debería aparecer una consola ConEmu (o lo que sea).
Estoy usando Visual Studio 2010 Pro
Estrechamente relacionado con esta pregunta (sin respuesta): ¿ usar Console2 para la depuración de Visual Studio?
Has mezclado los términos. La "Consola de Windows" no es un "cmd.exe", sino un "servicio" especial que se implementó, por ejemplo de Win7, con "conhost.exe".
Cuando inicia cualquier aplicación de consola (no importa cmd, powershell o su propia aplicación) Windows la inicia en un entorno especial, que puede tener una ventana de consola visible. Pero siempre es una consola interna de Windows.
¡Pero! Los emuladores de consola pueden tomar esta ventana, ocultar una consola real y mostrar su propia superficie emulada. Por ejemplo, puede iniciar ConEmu con modificadores especiales (descritos en SU, enlace en comentario) y listo.
Reemplazo de terminal predeterminado
ConEmu tiene una función llamada Default Terminal
. Si habilita esta función obtendrá una aplicación sin problemas desde Visual Studio en la terminal ConEmu. La idea es conectar CreateProcess en la aplicación de origen ( explorer.exe
, vcexpress.exe
, vcexpress.exe
, vcexpress.exe
con |
en la configuración). Lea más sobre esa característica en la wiki del proyecto .
Puede optar por usar una instancia existente de ConEmu o ejecutar una nueva ventana para su aplicación. Y ConEmu puede mostrar Press Enter or Esc to close console...
mensaje en la consola después de que su aplicación se cierra (la radio Always
). Ya no es necesario añadir readline
al final de su programa para ver el resultado.
Cambiar el código de tu aplicación
Debido a que es su propio programa, puede agregar, por ejemplo, líneas siguientes a la cabeza de su función main
Ejemplo de C ++
#ifdef _DEBUG
if (IsDebuggerPresent())
{
STARTUPINFO si = {sizeof(si)}; PROCESS_INFORMATION pi = {};
if (CreateProcess(NULL,
_T("/"C://Program Files//ConEmu//ConEmu//ConEmuC.exe/" /AUTOATTACH"),
NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
{ CloseHandle(pi.hProcess); CloseHandle(pi.hThread); }
}
#endif
C # example
#if DEBUG
ProcessStartInfo pi = new ProcessStartInfo(@"C:/Program Files/ConEmu/ConEmu/ConEmuC.exe", "/AUTOATTACH");
pi.CreateNoWindow = false;
pi.UseShellExecute = false;
Console.WriteLine("Press Enter after attach succeeded");
Process.Start(pi);
Console.ReadLine();
#endif