Fixed parsing stack frames mentioning "operator<<" or "operator<".
[kdbg.git] / kdbg / xsldbgdriver.h
blob43615e1f2ee32aacce055fb0ee477da42a51caff
1 // $Id$
3 // Copyright by Johannes Sixt, Keith Isdale
4 // This file is under GPL, the GNU General Public Licence
6 #ifndef XSLDBGDRIVER_H
7 #define XSLDBGDRIVER_H
9 #include "dbgdriver.h"
10 #include "qregexp.h"
13 class XsldbgDriver:public DebuggerDriver {
14 Q_OBJECT public:
15 XsldbgDriver();
16 ~XsldbgDriver();
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 void slotReceiveOutput(KProcess * process, char *buffer, int buflen);
26 virtual CmdQueueItem *executeCmd(DbgCommand, bool clearLow = false);
27 virtual CmdQueueItem *executeCmd(DbgCommand, QString strArg,
28 bool clearLow = false);
29 virtual CmdQueueItem *executeCmd(DbgCommand, int intArg,
30 bool clearLow = false);
31 virtual CmdQueueItem *executeCmd(DbgCommand, QString strArg,
32 int intArg, bool clearLow = false);
33 virtual CmdQueueItem *executeCmd(DbgCommand, QString strArg1,
34 QString strArg2, bool clearLow =
35 false);
36 virtual CmdQueueItem *executeCmd(DbgCommand, int intArg1, int intArg2,
37 bool clearLow = false);
38 virtual CmdQueueItem *queueCmd(DbgCommand, QueueMode mode);
39 virtual CmdQueueItem *queueCmd(DbgCommand, QString strArg,
40 QueueMode mode);
41 virtual CmdQueueItem *queueCmd(DbgCommand, int intArg, QueueMode mode);
42 virtual CmdQueueItem *queueCmd(DbgCommand, QString strArg, int intArg,
43 QueueMode mode);
44 virtual CmdQueueItem *queueCmd(DbgCommand, QString strArg1,
45 QString strArg2, QueueMode mode);
47 virtual void terminate();
48 virtual void detachAndTerminate();
49 virtual void interruptInferior();
51 virtual void setPrintQStringDataCmd(const char* cmd);
52 /**
53 * Parses the output as an array of QChars.
55 virtual VarTree *parseQCharArray(const char *output,
56 bool wantErrorValue, bool qt3like);
58 virtual void parseBackTrace(const char *output,
59 QList < StackFrame > &stack);
60 virtual bool parseFrameChange(const char *output, int &frameNo,
61 QString & file, int &lineNo,
62 DbgAddr & address);
63 virtual bool parseBreakList(const char *output,
64 QList < Breakpoint > &brks);
65 virtual bool parseThreadList(const char *output,
66 QList < ThreadInfo > &threads);
67 virtual bool parseBreakpoint(const char *output, int &id,
68 QString & file, int &lineNo, QString& address);
69 virtual void parseLocals(const char *output,
70 QList < VarTree > &newVars);
71 virtual bool parsePrintExpr(const char *output, bool wantErrorValue,
72 VarTree * &var);
73 virtual bool parseChangeWD(const char *output, QString & message);
74 virtual bool parseChangeExecutable(const char *output,
75 QString & message);
76 virtual bool parseCoreFile(const char *output);
77 virtual uint parseProgramStopped(const char *output,
78 QString & message);
79 virtual void parseSharedLibs(const char *output, QStrList & shlibs);
80 virtual bool parseFindType(const char *output, QString & type);
81 virtual void parseRegisters(const char *output,
82 QList < RegisterInfo > &regs);
83 virtual bool parseInfoLine(const char *output, QString & addrFrom,
84 QString & addrTo);
85 virtual void parseDisassemble(const char *output,
86 QList < DisassembledCode > &code);
87 virtual QString parseMemoryDump(const char *output,
88 QList < MemoryDump > &memdump);
89 virtual QString parseSetVariable(const char* output);
91 protected:
92 int m_gdbMajor, m_gdbMinor;
93 QString m_programWD; /* just an intermediate storage */
94 QString m_xslFile; /* needed to display it initially */
95 bool m_haveDataFile; /* have we set the XML data file to use? */
96 QString m_redirect; /* redirection to /dev/null */
97 bool m_haveCoreFile;
98 QRegExp m_markerRE;
100 QString makeCmdString(DbgCommand cmd, QString strArg);
101 QString makeCmdString(DbgCommand cmd, int intArg);
102 QString makeCmdString(DbgCommand cmd, QString strArg, int intArg);
103 QString makeCmdString(DbgCommand cmd, QString strArg1,
104 QString strArg2);
105 QString makeCmdString(DbgCommand cmd, int intArg1, int intArg2);
106 void parseMarker();
109 #endif // XSLDBGDRIVER_H