2012-12-22 02:02:33 +00:00
|
|
|
#ifndef __LIGHT_SYMBOLS__
|
|
|
|
#define __LIGHT_SYMBOLS__
|
|
|
|
#define LS_TRACE(functionName,fileId,lineNumber) LightSymbol __lstr(functionName,fileId,lineNumber);
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
//#include <pthread.h>
|
2013-12-03 15:23:37 +00:00
|
|
|
#include <windows.h>
|
2012-12-22 02:02:33 +00:00
|
|
|
|
|
|
|
typedef char* SZ;
|
|
|
|
|
|
|
|
#define LIGHT_SYMBOLS_FILE "LIGHT_SYMBOLS_FILE"
|
|
|
|
|
|
|
|
class LightSymbol {
|
|
|
|
const char* sym;
|
|
|
|
int fileId;
|
|
|
|
int lineNumber;
|
|
|
|
|
|
|
|
LightSymbol* parentFrame;
|
|
|
|
|
|
|
|
typedef LightSymbol* PLightSymbol;
|
|
|
|
|
|
|
|
static PLightSymbol lsFrames[1000];
|
|
|
|
static HANDLE handleFrames[1000];
|
|
|
|
static SZ* fileNames;
|
|
|
|
static bool busted;
|
|
|
|
|
|
|
|
public:
|
|
|
|
LightSymbol(const char* sym, int fileId, int lineNumber);
|
|
|
|
|
|
|
|
~LightSymbol();
|
|
|
|
|
|
|
|
static bool GetCallStack(char* sz, int len, const char* separator);
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
static LightSymbol** getThreadFrameContainer();
|
|
|
|
|
|
|
|
bool GetCallStackCore(char* sz, int len, const char* separator) const ;
|
|
|
|
|
|
|
|
static LightSymbol* GetCurrentFrame() ;
|
|
|
|
|
|
|
|
static void SetCurrentFrame(LightSymbol* ls) ;
|
|
|
|
|
|
|
|
static const char* trim(char* sz) ;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|