我正在开发一个使用Visual Studio 2015作为IDE的gcc应用程序。调试器是gdb。Visual Studio 2015“偷”应用程序的控制台
应用程序创建它自己的窗口。当我用DEBUG开关编译时,我需要应用程序也产生一个控制台窗口。它用于从多个线程调试和输出printf。感谢“-mwindows”开关,当我从Visual Studio外部执行应用程序时,此功能正常工作。
不幸的是,当我从Visual Studio中运行应用程序时,它似乎窃取了控制台窗口。没有控制台产生,并且printf的输出被重定向到输出调试窗口。
如果VS控制台实际上正确地打印了“\ n”而不是将它们从输出中剥离出来,这将不是什么大问题。所有内容都打印在同一行上,输出变得不可读。尝试尽我所能,我无法让VS在输出调试窗口中插入换行符。我在网上搜索了很多,这个问题似乎有很好的记录,但我找不到满意的答案。
在这一点上,这两种解决方案会为我工作:
- 防止Visual Studio中窃取应用程序的控制台窗口;
- 为我的所有printf添加特殊字符,以使输出调试打印行和回车。
编辑: 理想情况下,解决方案应该是跨。平台,在某种意义上,它不应该添加依赖关系WinAPI的。
EDIT2: “\ t”似乎按预期工作。为什么“\ n”不起作用?我也试过“\ r \ n”无济于事。
试图同时使用2个调试工具? –
我怀疑'-mwindows'将PE头中的子系统字段设置为“GUI”。你如何在运行时使用'AllocConsole'并重定向'stdout'来打印?这可能有帮助。看到这里:http://stackoverflow.com/questions/311955/redirecting-cout-to-a-console-in-windows(问题是关于C++的'std :: cout',但它也有一个C解决方案)。 – szczurcio
@WeatherVane:Visual Studio现在支持GDB。我建议你看看[这篇博文](http://blogs.msdn.com/b/vcblog/archive/2015/11/18/announcing-the-vs-gdb-debugger-extension.aspx)。 VS调试器有很多很棒的功能,所以它现在支持成为GDB前端是很好的。 但是,我的问题并不在于实际的调试,这很好。我只想以可读的方式看到我的控制台输出。 –