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.
10 #include "dbgdriver.h"
13 class GdbDriver
: public DebuggerDriver
20 virtual QString
driverName() const;
21 virtual QString
defaultInvocation() const;
22 virtual QStringList
boolOptionList() const;
23 void setDefaultInvocation(QString cmd
) { m_defaultCmd
= cmd
; }
24 static QString
defaultGdb();
25 virtual bool startup(QString cmdStr
);
26 virtual void commandFinished(CmdQueueItem
* cmd
);
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
,
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
);
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 */
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
);