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
);
27 virtual CmdQueueItem
* executeCmd(DbgCommand
);
28 virtual CmdQueueItem
* executeCmd(DbgCommand
, QString strArg
);
29 virtual CmdQueueItem
* executeCmd(DbgCommand
, int intArg
);
30 virtual CmdQueueItem
* executeCmd(DbgCommand
, QString strArg
, int intArg
);
31 virtual CmdQueueItem
* executeCmd(DbgCommand
, QString strArg1
, QString strArg2
);
32 virtual CmdQueueItem
* executeCmd(DbgCommand
, int intArg1
, int intArg2
);
33 virtual CmdQueueItem
* executeCmdOnce(DbgCommand
);
34 virtual CmdQueueItem
* executeCmdOnce(DbgCommand
, QString strArg
, int intArg
);
35 virtual CmdQueueItem
* queueCmd(DbgCommand
,
37 virtual CmdQueueItem
* queueCmd(DbgCommand
, QString strArg
,
39 virtual CmdQueueItem
* queueCmd(DbgCommand
, int intArg
,
41 virtual CmdQueueItem
* queueCmd(DbgCommand
, QString strArg
, int intArg
,
43 virtual CmdQueueItem
* queueCmd(DbgCommand
, QString strArg1
, QString strArg2
,
46 virtual void terminate();
47 virtual void detachAndTerminate();
48 virtual void interruptInferior();
49 virtual void setPrintQStringDataCmd(const char* cmd
);
50 virtual ExprValue
* parseQCharArray(const char* output
, bool wantErrorValue
, bool qt3like
);
51 virtual void parseBackTrace(const char* output
, std::list
<StackFrame
>& stack
);
52 virtual bool parseFrameChange(const char* output
, int& frameNo
,
53 QString
& file
, int& lineNo
, DbgAddr
& address
);
54 virtual bool parseBreakList(const char* output
, std::list
<Breakpoint
>& brks
);
55 virtual std::list
<ThreadInfo
> parseThreadList(const char* output
);
56 virtual bool parseBreakpoint(const char* output
, int& id
,
57 QString
& file
, int& lineNo
, QString
& address
);
58 virtual void parseLocals(const char* output
, std::list
<ExprValue
*>& newVars
);
59 virtual ExprValue
* parsePrintExpr(const char* output
, bool wantErrorValue
);
60 virtual bool parseChangeWD(const char* output
, QString
& message
);
61 virtual bool parseChangeExecutable(const char* output
, QString
& message
);
62 virtual bool parseCoreFile(const char* output
);
63 virtual uint
parseProgramStopped(const char* output
, bool haveCoreFile
,
65 virtual QStringList
parseSharedLibs(const char* output
);
66 virtual bool parseFindType(const char* output
, QString
& type
);
67 virtual std::list
<RegisterInfo
> parseRegisters(const char* output
);
68 virtual bool parseInfoLine(const char* output
,
69 QString
& addrFrom
, QString
& addrTo
);
70 virtual std::list
<DisassembledCode
> parseDisassemble(const char* output
);
71 virtual QString
parseMemoryDump(const char* output
, std::list
<MemoryDump
>& memdump
);
72 virtual QString
parseSetVariable(const char* output
);
73 virtual QString
editableValue(VarTree
* value
);
75 QString m_programWD
; /* just an intermediate storage */
76 QString m_redirect
; /* redirection to /dev/null */
77 QString m_defaultCmd
; /* how to invoke gdb */
79 QString
makeCmdString(DbgCommand cmd
, QString strArg
);
80 QString
makeCmdString(DbgCommand cmd
, int intArg
);
81 QString
makeCmdString(DbgCommand cmd
, QString strArg
, int intArg
);
82 QString
makeCmdString(DbgCommand cmd
, QString strArg1
, QString strArg2
);
83 QString
makeCmdString(DbgCommand cmd
, int intArg1
, int intArg2
);
84 virtual int findPrompt(const QByteArray
& output
) const;
85 void parseMarker(CmdQueueItem
* cmd
);