#ifndef __Debuggers__ #define __Debuggers__ #define DR_LOG(x) // RLOG(x) #include "GdbUtils.h" #include #include #define IMAGECLASS DbgImg #define IMAGEFILE #include #define LAYOUTFILE #include typedef uint64 adr_t; String CreateDebugTTY(); void KillDebugTTY(); bool TTYQuit(); String GdbCommand(bool console); int CharFilterReSlash(int c); class DbgDisas : public Ctrl { public: virtual void Paint(Draw& w); virtual void Layout(); virtual void LeftDown(Point p, dword); virtual void MouseWheel(Point, int zdelta, dword); virtual bool Key(dword key, int); virtual void GotFocus(); virtual void LostFocus(); private: Index addr; struct Inst : Moveable { String bytes; String code; String args; }; ScrollBar sb; Vector inst; Index taddr; int codecx; adr_t low, high; int cursor; int ip; Image ipimg; bool mode64; Font opfont; Size GetBox() const; void Scroll(); typedef DbgDisas CLASSNAME; public: Event<> WhenCursor; Event<> WhenFocus; void Clear(); void Add(adr_t adr, const String& code, const String& args, const String& bytes = Null); void AddT(adr_t tadr) { taddr.Add(tadr); } void WriteClipboard(); void Set(const String& s); bool InRange(adr_t adr) { return addr.Find(adr) >= 0; } void SetCursor(adr_t adr); adr_t GetCursor() const { return cursor >= 0 ? addr[cursor] : 0; } void SetIp(adr_t adr, const Image& img); void Mode64(bool b) { mode64 = b; } DbgDisas(); }; struct Dbg { virtual void Stop(); virtual bool IsFinished(); virtual bool Result(String& result, const String& s) = 0; typedef Dbg CLASSNAME; Dbg(); }; struct RedDisplay : public Display { void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword s) const; }; const char *FindTag(const char *txt, const char *tag); const char *AfterTag(const char *txt, const char *tag); const char *AfterHeading(const char *txt, const char *heading); VectorMap DataMap(const ArrayCtrl& data); void MarkChanged(const VectorMap& m, ArrayCtrl& data); #define GDB_PROMPT "" #include "Gdb.h" #define KEYGROUPNAME "Debugger" #define KEYNAMESPACE PdbKeys #define KEYFILE #include #ifdef PLATFORM_WIN32 #include "Pdb.h" #endif #endif