Windows CE 3.0Windows CE 2.11Pocket PC 2002Windows MobileQAVisual C++ 7.0.NET 1.0Windows 2000Visual C++ 6.0Windows XP移动应用MFC中级开发Visual StudioWindowsC++.NET
在Developer Studio的输出窗口中双击跟踪消息以转到代码行
利用Developer Studio中的输出窗口
引言
在某些情况下,你可能会发现将调试转储格式化成如下形式是有益的:
filepathname.cpp(123) : something
当此类行显示在开发者工作室/Visual Studio的输出窗口中时,你可以双击它,并跳转到由文件路径/行号模式指定的位置。生成带有易于访问原始行的调试转储非常方便,所以我编写了一个宏来使用__FILE__
和__LINE__
预处理器格式化调试转储。
我最初在知识库文章 HOWTO: 使用 #pragma 生成用户定义的警告消息中发现了构建输出窗口的此功能,它几乎可以完美地插入 TODO 块。后来,我尝试在调试输出中使用它,并发现它也存在于调试输出窗口中。它可能也适用于其他输出窗口。
更多信息
以下代码说明了如何告诉编译器使用文件路径和行号格式化调试转储:
// collisions.h
#ifdef _DEBUG
#define TRACE_LINE(string) \
{\
CString strTrace; \
strTrace.Format("%s(%d) : \t%ld:\t%s", \
__FILE__,__LINE__,timeGetTime(),string); \
if (strTrace.GetLength() > 512) \
TRACE("TRACE string too long !\r\n"); \
else TRACE(strTrace);}
#else
#define TRACE_LINE(string) void(0)
#endif
// collisions.cpp
TRACE_LINE("Need to do 3D collision testing") ;
调试输出
collisions.cpp.cpp(123) : Need to do 3D collision testing
我还有其他变体,例如TRACE_LINE1
,它接受一个格式字符串
和一个参数,以及TRACE_LINE2
,它接受一个格式字符串
和两个参数,等等。你当然也可以编写一个没有 MFC 支持的版本。
有关__FILE__
和__LINE__
预定义宏的更多信息,请参阅 Visual C++ 帮助文件;搜索“预定义宏”,主题“预处理器参考”,然后单击“ANSI”。