1 /* 2 * Copyright Johannes Sixt 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 GDBDRIVER_H 8 #define GDBDRIVER_H 9 10 #include "dbgdriver.h" 11 12 13 class GdbDriver : public DebuggerDriver 14 { 15 Q_OBJECT 16 public: 17 GdbDriver(); 18 ~GdbDriver(); 19 20 virtual QString driverName() const; 21 virtual QString defaultInvocation() const; 22 virtual QStringList boolOptionList() const; setDefaultInvocation(QString cmd)23 void setDefaultInvocation(QString cmd) { m_defaultCmd = cmd; } 24 static QString defaultGdb(); 25 virtual bool startup(QString cmdStr); 26 virtual void commandFinished(CmdQueueItem* cmd); 27 28 virtual void terminate(); 29 virtual void detachAndTerminate(); 30 virtual void interruptInferior(); 31 virtual void setPrintQStringDataCmd(const char* cmd); 32 virtual ExprValue* parseQCharArray(const char* output, bool wantErrorValue, bool qt3like); 33 virtual void parseBackTrace(const char* output, std::list<StackFrame>& stack); 34 virtual bool parseFrameChange(const char* output, int& frameNo, 35 QString& file, int& lineNo, DbgAddr& address); 36 virtual bool parseBreakList(const char* output, std::list<Breakpoint>& brks); 37 virtual std::list<ThreadInfo> parseThreadList(const char* output); 38 virtual bool parseBreakpoint(const char* output, int& id, 39 QString& file, int& lineNo, QString& address); 40 virtual void parseLocals(const char* output, std::list<ExprValue*>& newVars); 41 virtual ExprValue* parsePrintExpr(const char* output, bool wantErrorValue); 42 virtual bool parseChangeWD(const char* output, QString& message); 43 virtual bool parseChangeExecutable(const char* output, QString& message); 44 virtual bool parseCoreFile(const char* output); 45 virtual uint parseProgramStopped(const char* output, bool haveCoreFile, 46 QString& message); 47 virtual QStringList parseSharedLibs(const char* output); 48 virtual bool parseFindType(const char* output, QString& type); 49 virtual std::list<RegisterInfo> parseRegisters(const char* output); 50 virtual bool parseInfoLine(const char* output, 51 QString& addrFrom, QString& addrTo); 52 virtual std::list<DisassembledCode> parseDisassemble(const char* output); 53 virtual QString parseMemoryDump(const char* output, std::list<MemoryDump>& memdump); 54 virtual QString parseSetVariable(const char* output); 55 virtual QString editableValue(VarTree* value); 56 protected: 57 QString m_programWD; /* just an intermediate storage */ 58 QString m_redirect; /* redirection to /dev/null */ 59 bool m_littleendian = true; /* if gdb works with little endian or big endian */ 60 QString m_defaultCmd; /* how to invoke gdb */ 61 62 virtual QString makeCmdString(DbgCommand cmd); 63 virtual QString makeCmdString(DbgCommand cmd, QString strArg); 64 virtual QString makeCmdString(DbgCommand cmd, int intArg); 65 virtual QString makeCmdString(DbgCommand cmd, QString strArg, int intArg); 66 virtual QString makeCmdString(DbgCommand cmd, QString strArg1, QString strArg2); 67 virtual QString makeCmdString(DbgCommand cmd, int intArg1, int intArg2); 68 virtual QString makeCmdString(DbgCommand cmd, QString strArg, int intArg1, int intArg2); 69 virtual int findPrompt(const QByteArray& output) const; 70 void parseMarker(CmdQueueItem* cmd); 71 }; 72 73 #endif // GDBDRIVER_H 74