visual-studio-2010 – 为Visual Studio控制台应用程序调试使用自定义控制台

是否可以设置Visual Studio在调试控制台应用程序时使用非标准控制台?

我不知道什么是默认控制台,它看起来就像cmd.exe。我真的很喜欢我的控制台应用程序运行在ConEmu时,我调试。

要清楚,我想单击“开始调试”,该过程应该照常发生,但是,而不是打开一个cmd.exe控制台,它应该启动一个ConEmu控制台(或任何)。

我使用Visual Studio 2010 Pro

与这个(未回答的)问题密切相关:Use Console2 for Visual Studio debugging?

你混淆了术语。 “Windows控制台”不是“cmd.exe”,而是特殊的“服务”,实现了,例如Win7,与“conhost.exe”。

当你启动任何控制台应用程序(无所谓cmd,powershell或你自己的应用程序)窗口启动它在特殊的环境,这可能有可见的控制台窗口。但它总是内部Windows控制台。

但!控制台模拟器可以抓取此窗口,隐藏真实控制台并显示其自己的模拟表面。
例如,您可以使用特殊开关(在SU上描述,在注释中链接)和其完成启动ConEmu。

默认终端替换

ConEmu具有名为默认终端的功能。如果启用此功能,您将从ConEmu终端中的Visual Studio无缝启动您的应用程序。这个想法是钩在源应用程序中的CreateProcess(explorer.exe,vcexpress.exe等等,在设置中用|分隔它们)。在project wiki中了解有关该功能的更多信息。

您可以选择使用现有的ConEmu实例或为应用程序运行新窗口。和ConEmu可以显示按Enter键或Esc关闭控制台…消息在控制台上,在您的应用程序退出(始终收音机)。不需要在程序的末尾添加readline来查看输出。

更改应用程序代码

因为它是你自己的程序,你可以添加,例如,以下行到你的主要功能的头

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#示例

#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
http://stackoverflow.com/questions/12602411/use-custom-console-for-visual-studio-console-application-debugging

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:visual-studio-2010 – 为Visual Studio控制台应用程序调试使用自定义控制台