summaryrefslogtreecommitdiffstats
path: root/kdbg/gdbdriver.h
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2013-07-03 01:47:30 +0200
committerSlávek Banko <slavek.banko@axis.cz>2013-07-03 01:47:30 +0200
commit239e873a38fa91a3fbd27e134bda015922abbabd (patch)
treed7c79f740bce93768ee78b6b787c83a2115b047f /kdbg/gdbdriver.h
downloadkdbg-239e873a38fa91a3fbd27e134bda015922abbabd.tar.gz
kdbg-239e873a38fa91a3fbd27e134bda015922abbabd.zip
Initial import
Diffstat (limited to 'kdbg/gdbdriver.h')
-rw-r--r--kdbg/gdbdriver.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/kdbg/gdbdriver.h b/kdbg/gdbdriver.h
new file mode 100644
index 0000000..c92248a
--- /dev/null
+++ b/kdbg/gdbdriver.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright Johannes Sixt
+ * This file is licensed under the GNU General Public License Version 2.
+ * See the file COPYING in the toplevel directory of the source directory.
+ */
+
+#ifndef GDBDRIVER_H
+#define GDBDRIVER_H
+
+#include "dbgdriver.h"
+
+
+class GdbDriver : public DebuggerDriver
+{
+ Q_OBJECT
+public:
+ GdbDriver();
+ ~GdbDriver();
+
+ virtual QString driverName() const;
+ virtual QString defaultInvocation() const;
+ virtual QStringList boolOptionList() const;
+ void setDefaultInvocation(QString cmd) { m_defaultCmd = cmd; }
+ static QString defaultGdb();
+ virtual bool startup(QString cmdStr);
+ virtual void commandFinished(CmdQueueItem* cmd);
+ virtual CmdQueueItem* executeCmd(DbgCommand,
+ bool clearLow = false);
+ virtual CmdQueueItem* executeCmd(DbgCommand, QString strArg,
+ bool clearLow = false);
+ virtual CmdQueueItem* executeCmd(DbgCommand, int intArg,
+ bool clearLow = false);
+ virtual CmdQueueItem* executeCmd(DbgCommand, QString strArg, int intArg,
+ bool clearLow = false);
+ virtual CmdQueueItem* executeCmd(DbgCommand, QString strArg1, QString strArg2,
+ bool clearLow = false);
+ virtual CmdQueueItem* executeCmd(DbgCommand, int intArg1, int intArg2,
+ bool clearLow = false);
+ virtual CmdQueueItem* queueCmd(DbgCommand,
+ QueueMode mode);
+ virtual CmdQueueItem* queueCmd(DbgCommand, QString strArg,
+ QueueMode mode);
+ virtual CmdQueueItem* queueCmd(DbgCommand, int intArg,
+ QueueMode mode);
+ virtual CmdQueueItem* queueCmd(DbgCommand, QString strArg, int intArg,
+ QueueMode mode);
+ virtual CmdQueueItem* queueCmd(DbgCommand, QString strArg1, QString strArg2,
+ QueueMode mode);
+
+ virtual void terminate();
+ virtual void detachAndTerminate();
+ virtual void interruptInferior();
+ virtual void setPrintQStringDataCmd(const char* cmd);
+ virtual ExprValue* parseQCharArray(const char* output, bool wantErrorValue, bool qt3like);
+ virtual void parseBackTrace(const char* output, std::list<StackFrame>& stack);
+ virtual bool parseFrameChange(const char* output, int& frameNo,
+ QString& file, int& lineNo, DbgAddr& address);
+ virtual bool parseBreakList(const char* output, std::list<Breakpoint>& brks);
+ virtual std::list<ThreadInfo> parseThreadList(const char* output);
+ virtual bool parseBreakpoint(const char* output, int& id,
+ QString& file, int& lineNo, QString& address);
+ virtual void parseLocals(const char* output, std::list<ExprValue*>& newVars);
+ virtual ExprValue* parsePrintExpr(const char* output, bool wantErrorValue);
+ virtual bool parseChangeWD(const char* output, QString& message);
+ virtual bool parseChangeExecutable(const char* output, QString& message);
+ virtual bool parseCoreFile(const char* output);
+ virtual uint parseProgramStopped(const char* output, QString& message);
+ virtual QStringList parseSharedLibs(const char* output);
+ virtual bool parseFindType(const char* output, QString& type);
+ virtual std::list<RegisterInfo> parseRegisters(const char* output);
+ virtual bool parseInfoLine(const char* output,
+ QString& addrFrom, QString& addrTo);
+ virtual std::list<DisassembledCode> parseDisassemble(const char* output);
+ virtual QString parseMemoryDump(const char* output, std::list<MemoryDump>& memdump);
+ virtual QString parseSetVariable(const char* output);
+ virtual QString editableValue(VarTree* value);
+protected:
+ int m_gdbMajor, m_gdbMinor;
+ QString m_programWD; /* just an intermediate storage */
+ QString m_redirect; /* redirection to /dev/null */
+ bool m_haveCoreFile;
+ QString m_defaultCmd; /* how to invoke gdb */
+
+ QString makeCmdString(DbgCommand cmd, QString strArg);
+ QString makeCmdString(DbgCommand cmd, int intArg);
+ QString makeCmdString(DbgCommand cmd, QString strArg, int intArg);
+ QString makeCmdString(DbgCommand cmd, QString strArg1, QString strArg2);
+ QString makeCmdString(DbgCommand cmd, int intArg1, int intArg2);
+ void parseMarker();
+};
+
+#endif // GDBDRIVER_H