1 /* 2 * Copyright Johannes Sixt, Keith Isdale 3 * This file is licensed under the GNU General Public License Version 2. 4 * See the file COPYING in the toplevel directory of the source directory. 5 */ 6 7 #ifndef XSLDBGDRIVER_H 8 #define XSLDBGDRIVER_H 9 10 #include "dbgdriver.h" 11 12 13 class XsldbgDriver:public DebuggerDriver { 14 Q_OBJECT public: 15 XsldbgDriver(); 16 ~XsldbgDriver(); 17 18 virtual QString driverName() const; 19 virtual QString defaultInvocation() const; 20 virtual QStringList boolOptionList() const; 21 static QString defaultXsldbg(); 22 virtual bool startup(QString cmdStr); 23 virtual void commandFinished(CmdQueueItem * cmd); 24 25 virtual void terminate(); 26 virtual void detachAndTerminate(); 27 virtual void interruptInferior(); 28 29 virtual void setPrintQStringDataCmd(const char* cmd); 30 /** 31 * Parses the output as an array of QChars. 32 */ 33 virtual ExprValue *parseQCharArray(const char *output, 34 bool wantErrorValue, bool qt3like); 35 36 virtual void parseBackTrace(const char *output, 37 std::list < StackFrame > &stack); 38 virtual bool parseFrameChange(const char *output, int &frameNo, 39 QString & file, int &lineNo, 40 DbgAddr & address); 41 virtual bool parseBreakList(const char *output, 42 std::list < Breakpoint > &brks); 43 virtual std::list<ThreadInfo> parseThreadList(const char *output); 44 virtual bool parseBreakpoint(const char *output, int &id, 45 QString & file, int &lineNo, QString& address); 46 virtual void parseLocals(const char *output, 47 std::list < ExprValue* > &newVars); 48 virtual ExprValue * parsePrintExpr(const char *output, bool wantErrorValue); 49 virtual bool parseChangeWD(const char *output, QString & message); 50 virtual bool parseChangeExecutable(const char *output, 51 QString & message); 52 virtual bool parseCoreFile(const char *output); 53 virtual uint parseProgramStopped(const char *output, bool haveCoreFile, 54 QString & message); 55 virtual QStringList parseSharedLibs(const char *output); 56 virtual bool parseFindType(const char *output, QString & type); 57 virtual std::list<RegisterInfo> parseRegisters(const char *output); 58 virtual bool parseInfoLine(const char *output, QString & addrFrom, 59 QString & addrTo); 60 virtual std::list<DisassembledCode> parseDisassemble(const char *output); 61 virtual QString parseMemoryDump(const char *output, 62 std::list < MemoryDump > &memdump); 63 virtual QString parseSetVariable(const char* output); 64 65 protected: 66 QString m_programWD; /* just an intermediate storage */ 67 QString m_xslFile; /* needed to display it initially */ 68 bool m_haveDataFile; /* have we set the XML data file to use? */ 69 QString m_redirect; /* redirection to /dev/null */ 70 71 virtual QString makeCmdString(DbgCommand cmd); 72 virtual QString makeCmdString(DbgCommand cmd, QString strArg); 73 virtual QString makeCmdString(DbgCommand cmd, int intArg); 74 virtual QString makeCmdString(DbgCommand cmd, QString strArg, int intArg); 75 virtual QString makeCmdString(DbgCommand cmd, QString strArg1, QString strArg2); 76 virtual QString makeCmdString(DbgCommand cmd, int intArg1, int intArg2); 77 virtual QString makeCmdString(DbgCommand cmd, QString strArg, int intArg1, int intArg2); 78 virtual int findPrompt(const QByteArray& output) const; 79 void parseMarker(); 80 }; 81 82 #endif // XSLDBGDRIVER_H 83