#include <vector>
#include "trace_model.hpp"
-
+#include "trace_backtrace.hpp"
namespace trace {
class File;
std::vector<bool> structs;
std::vector<bool> enums;
std::vector<bool> bitmasks;
+ std::vector<bool> frames;
public:
Writer();
bool open(const char *filename);
void close(void);
- unsigned beginEnter(const FunctionSig *sig);
+ unsigned beginEnter(const FunctionSig *sig, unsigned thread_id);
void endEnter(void);
void beginLeave(unsigned call);
void beginReturn(void);
inline void endReturn(void) {}
+ void beginBacktrace(unsigned num_frames);
+ void writeStackFrame(const RawStackFrame *frame);
+ inline void endBacktrace(void) {}
+
void beginArray(size_t length);
inline void endArray(void) {}
void beginStruct(const StructSig *sig);
inline void endStruct(void) {}
+ void beginRepr(void);
+ inline void endRepr(void) {}
+
void writeBool(bool value);
void writeSInt(signed long long value);
void writeUInt(unsigned long long value);
void writeEnum(const EnumSig *sig, signed long long value);
void writeBitmask(const BitmaskSig *sig, unsigned long long value);
void writeNull(void);
- void writeOpaque(const void *ptr);
+ void writePointer(unsigned long long addr);
void writeCall(Call *call);
};
- extern const FunctionSig memcpy_sig;
- extern const FunctionSig malloc_sig;
- extern const FunctionSig free_sig;
- extern const FunctionSig realloc_sig;
-
- /**
- * A specialized Writer class, mean to trace the current process.
- *
- * In particular:
- * - it creates a trace file based on the current process name
- * - uses mutexes to allow tracing from multiple threades
- * - flushes the output to ensure the last call is traced in event of
- * abnormal termination
- */
- class LocalWriter : public Writer {
- protected:
- int acquired;
-
- public:
- /**
- * Should never called directly -- use localWriter singleton below instead.
- */
- LocalWriter();
- ~LocalWriter();
-
- void open(void);
-
- unsigned beginEnter(const FunctionSig *sig);
- void endEnter(void);
-
- void beginLeave(unsigned call);
- void endLeave(void);
-
- void flush(void);
- };
-
- /**
- * Singleton.
- */
- extern LocalWriter localWriter;
-}
+} /* namespace trace */
#endif /* _TRACE_WRITER_HPP_ */