利用线程局部存储保存栈深实现函数间的缩进,输出使用 OutputDebugString API 便于用 DebugView 查看,这样本机和远程(DebugView可远程)都可看到调用栈了。 #ifndef TraceEx_H #define TraceEx_H // #include <Windows.h> // class CTraceEx { public: CTraceEx(LPCTSTR pszFunction, LPCTSTR pszThread = NULL); ~CTraceEx(); static VOID Log(LPCTSTR pszFormat, ...); static VOID SetFlag(LONG lFlag); protected: CTraceEx(); CTraceEx(CTraceEx &); CTraceEx & operator = (CTraceEx &); private: DWORD m_dwTickCount; LPCTSTR m_pszFunction; }; // #endif #include "TraceEx.h" // enum { THREAD_NAME = 24, BUFFER_SIZE = 4 * 1024, }; // #ifndef __ITEMCOUNT #define __ITEMCOUNT(Array) sizeof((Array))/sizeof((Array)[0]) #endif // const TCHAR szSpace[] = TEXT(" "); const TCHAR szNewLine[] = TEXT("/r/n&#