📄 callstack.h
字号:
#ifndef __CALL_STACK_H__
#define __CALL_STACK_H__
#include <e32std.h>
#include <flogger.h>
_LIT( _KTestLogDir, "tm" );
_LIT( _KTestLogFile, "callstack.log" );
#define FUNCTION_LEVEL_STATISTICS
extern RFileLogger iNqLogger;
#ifdef __WINS__
#define CALLSTACK_DEBUG 1
#else
#ifdef EKA2
#define CALLSTACK_DEBUG 1
#endif // EKA2
#endif // __WINS__
const TInt KDebugDummyFlag = 0; // supress complier complaint
#ifdef CALLSTACK_DEBUG
TBool DbAssertFailedLine(const TDesC8& aExpression, const TDesC8& aFileName, int aLine);
#define CALLSTACKITEM(X) TCallStackItem __item(X);
#define CALLSTACKITEM_N(CLASS, FUNC) TCallStackItem __item((CLASS), (FUNC));
#define LOGS(args) iNqLogger.Write(args);
#define LOGV(args) \
do{ \
iNqLogger.WriteFormat args; \
}while(&KDebugDummyFlag == 0);
#define DB_ASSERT(f) \
do \
{ \
if (!(f) && DbAssertFailedLine(TPtrC8((TText8*)#f), TPtrC8((TText8*)__FILE__), __LINE__)) \
User::Invariant(); \
} while (0) ;
#else
#define CALLSTACKITEM(X)
#define CALLSTACKITEM_N(CLASS, FUNC)
#define LOGS(args) do{}while(&KDebugDummyFlag == 0);
#define LOGV(args) do{}while(&KDebugDummyFlag == 0);
#define DB_ASSERT(f) ((void)0);
#endif
class TCallStackItem
{
public:
TCallStackItem(const TDesC8& Name);
TCallStackItem(const TDesC8& Class, const TDesC8& Func);
~TCallStackItem();
private:
TBuf8<256> iName;
#ifdef FUNCTION_LEVEL_STATISTICS
TUint iStartTicks;
#endif
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -