/*************************************************************************** begin : Sun Aug 8 1999 copyright : (C) 1999 by John Birch email : jbb@tdevelop.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef _DBGCONTROLLER_H_ #define _DBGCONTROLLER_H_ #include "mi/gdbmi.h" #include #include class KProcess; class TQString; class TQStrList; namespace GDBDebugger { class Breakpoint; class DbgCommand; class TrimmableItem; class VarItem; /***************************************************************************/ /** * @author jbb */ /***************************************************************************/ // sigh - namespace's don't work on some of the older compilers enum DBGStateFlags { s_dbgNotStarted = 1, s_appNotStarted = 2, s_waitForWrite = 8, s_programExited = 16, s_viewBT = 128, s_viewBP = 256, s_attached = 512, s_core = 1024, s_waitTimer = 2048, // Set when 'slotStopDebugger' started executing, to avoid // entering that function several times. s_shuttingDown = 4096, s_explicitBreakInto = (s_shuttingDown << 1), s_dbgBusy = (s_explicitBreakInto << 1), s_appRunning = (s_dbgBusy << 1), s_lastDbgState = (s_appRunning << 1) }; /***************************************************************************/ /***************************************************************************/ /***************************************************************************/ class DbgController : public TQObject { Q_OBJECT TQ_OBJECT public: DbgController(); virtual ~DbgController(); virtual bool stateIsOn( int state ) = 0; public slots: virtual void configure() = 0; virtual void slotCoreFile(const TQString &coreFile) = 0; virtual void slotAttachTo(int pid) = 0; virtual void slotStopDebugger() = 0; virtual void slotRun() = 0; // Kills the application but does not stop the debugger itself. virtual void slotKill() = 0; virtual void slotRunUntil(const TQString &fileName, int lineNum) = 0; virtual void slotJumpTo(const TQString &fileName, int lineNum) = 0; virtual void slotStepInto() = 0; virtual void slotStepOver() = 0; virtual void slotStepIntoIns() = 0; virtual void slotStepOverIns() = 0; virtual void slotStepOutOff() = 0; virtual void slotBreakInto() = 0; // jw - for optional additional commands and initialization virtual void slotVarItemConstructed(VarItem */*item*/) {} protected slots: virtual void slotDbgStdout(KProcess *proc, char *buf, int buflen) = 0; virtual void slotDbgStderr(KProcess*, char*, int) {} ; virtual void slotDbgWroteStdin(KProcess *proc) = 0; virtual void slotDbgProcessExited(KProcess *proc) = 0; signals: void gotoSourcePosition (const TQString &fileName, int lineNum); void rawGDBMemoryDump (char *buf); void rawGDBRegisters (char *buf); void rawGDBLibraries (char *buf); void ttyStdout (const char *output); void ttyStderr (const char *output); void gdbInternalCommandStdout (const char *output); void gdbUserCommandStdout (const char *output); void gdbStderr (const char *output); void showStepInSource (const TQString &fileName, int lineNum, const TQString &address); void dbgtqStatus (const TQString &status, int statusFlag); protected: KProcess *dbgProcess_; }; } #endif