2016-01-20 113 views
13

我正在開發一個使用Visual Studio 2015作爲IDE的gcc應用程序。調試器是gdb。Visual Studio 2015「偷」應用程序的控制檯

應用程序創建它自己的窗口。當我用DEBUG開關編譯時,我需要應用程序也產生一個控制檯窗口。它用於從多個線程調試和輸出printf。感謝「-mwindows」開關,當我從Visual Studio外部執行應用程序時,此功能正常工作。

不幸的是,當我從Visual Studio中運行應用程序時,它似乎竊取了控制檯窗口。沒有控制檯產生,並且printf的輸出被重定向到輸出調試窗口。

如果VS控制檯實際上正確地打印了「\ n」而不是將它們從輸出中剝離出來,這將不是什麼大問題。所有內容都打印在同一行上,輸出變得不可讀。嘗試盡我所能,我無法讓VS在輸出調試窗口中插入換行符。我在網上搜索了很多,這個問題似乎有很好的記錄,但我找不到滿意的答案。

在這一點上,這兩種解決方案會爲我工作:

  1. 防止Visual Studio中竊取應用程序的控制檯窗口;
  2. 爲我的所有printf添加特殊字符,以使輸出調試打印行和回車。

編輯: 理想情況下,解決方案應該是跨。平臺,在某種意義上,它不應該添加依賴關係WinAPI的。

EDIT2: 「\ t」似乎按預期工作。爲什麼「\ n」不起作用?我也試過「\ r \ n」無濟於事。

+0

試圖同時使用2個調試工具? –

+2

我懷疑'-mwindows'將PE頭中的子系統字段設置爲「GUI」。你如何在運行時使用'AllocConsole'並重定向'stdout'來打印?這可能有幫助。看到這裏:http://stackoverflow.com/questions/311955/redirecting-cout-to-a-console-in-windows(問題是關於C++的'std :: cout',但它也有一個C解決方案)。 – szczurcio

+2

@WeatherVane:Visual Studio現在支持GDB。我建議你看看[這篇博文](http://blogs.msdn.com/b/vcblog/archive/2015/11/18/announcing-the-vs-gdb-debugger-extension.aspx)。 VS調試器有很多很棒的功能,所以它現在支持成爲GDB前端是很好的。 但是,我的問題並不在於實際的調試,這很好。我只想以可讀的方式看到我的控制檯輸出。 –

回答

1

微軟的Visual Studio高級PM經理就此問題與我聯繫。我在大約四個月前(大概在這裏發佈它的時間)將它作爲Visual Studio內部的「反饋」發佈。(0127)更新3.

+0

是否有公共問題ID?例如。問題報告的URL。 – bahrep

+0

不幸的是,我沒有意識到這一點。與PM經理(原文如此)的討論非常正式。不過,我很高興他伸出手。這表明你實際上可以通過VS發送反饋。 –

+0

我只是想過一些像這樣的問題條目https://connect.microsoft.com/VisualStudio/feedback/details/807715/making-any-change-to-a-resource-only-dll-project-causes-a -dialog-definition-to-change-an-become-invalid – bahrep

相關問題