2012-03-02 34 views
8

Tôi đã bắt đầu một dự án trống trong Visual Studio 2010 để viết một ứng dụng C. Làm cách nào để gửi thông tin gỡ lỗi đến cửa sổ Đầu ra (menu Gỡ lỗi ->Windows ->Đầu ra)? Có cách nào tương đối đơn giản để triển khai TRACE hoặc OutputDebugString hoặc tương tự không?Cách đơn giản để gửi thông tin gỡ lỗi đến cửa sổ Visual Studio 'Output'

+0

thể trùng lặp của [In ra trên cửa sổ Output trong Visual C++ IDE] (http: // stackoverflow.com/questions/7697842/printing-output-on-the-output-window-in-visual-c-ide) –

+0

Xem thêm: http://stackoverflow.com/q/1333527/39648 –

Trả lời

8

Bạn có thể sử dụng OutputDebugString từ chương trình VS C.

#include <windows.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    OutputDebugString(_T("Hello World\n")); 
    return 0; 
} 

Kết quả sẽ chỉ được hiển thị nếu bạn chạy với gỡ lỗi (Debug> Start Debugging)

Trong cửa sổ Output, chọn "Debug" cho "Hiển thị đầu ra từ:"

+0

_T() đang được ...? – Simon

+1

@Simon là một macro tiền xử lý chuẩn của Microsoft để xử lý việc tạo các chương trình biên dịch cả ở chế độ Unicode và chế độ ANSI. Bạn có thể xóa _T() nếu bạn không sử dụng [tchar.h và bạn bè] (https://msdn.microsoft.com/en-us/library/windows/desktop/ff381407 (v = vs.85). aspx # tchars). –

1

Nếu bạn sử dụng C++, bạn có thể quan tâm đến macro TRACE di động của mình.

#ifdef ENABLE_TRACE 
# ifdef _MSC_VER 
# include <windows.h> 
# include <sstream> 
# define TRACE(x)       \ 
    do { std::ostringstream s; s << x;  \ 
      OutputDebugString(s.str().c_str()); \ 
     } while(0) 
# else 
# include <iostream> 
# define TRACE(x) std::cerr << x << std::flush 
# endif 
#else 
# define TRACE(x) 
#endif 

dụ:

#define ENABLE_TRACE //can depend on _DEBUG or NDEBUG macros 
#include "my_above_trace_header.h" 

int main (void) 
{ 
    int  i = 123; 
    double d = 456.789; 
    TRACE ("main() i="<< i <<" d="<< d <<'\n'); 
} 

Bất kỳ cải tiến/đề xuất/đóng góp đều được chào đón ;-)

Các vấn đề liên quan