KDevelop API Documentation

jdbcontroller.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           jdbcontroller.h  -  description
00003                              -------------------
00004     begin                : Sun Aug 8 1999
00005     copyright            : (C) 1999 by John Birch
00006     email                : jbb@kdevelop.org
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef _JDBCONTROLLER_H_
00019 #define _JDBCONTROLLER_H_
00020 
00021 #include "dbgcontroller.h"
00022 #include <qobject.h>
00023 #include <qptrlist.h>
00024 #include <qdict.h>
00025 #include <qstringlist.h>
00026 
00027 
00028 class KProcess;
00029 class QString;
00030 
00031 namespace JAVADebugger
00032 {
00033 
00034 class Breakpoint;
00035 class DbgCommand;
00036 class FramestackWidget;
00037 class VarItem;
00038 class VariableTree;
00039 class STTY;
00040 
00041 class JDBVarItem : QObject {
00042     Q_OBJECT
00043 public:
00044     JDBVarItem();
00045     QString toString();
00046 
00047     QString value;
00048     QString name;
00049     QPtrList<JDBVarItem> siblings;
00050 
00051 };
00052 
00053 
00059 class JDBController : public DbgController
00060 {
00061     Q_OBJECT
00062 
00063 public:
00064     JDBController(VariableTree *varTree, FramestackWidget *frameStack, QString projectDirectory, QString mainProgram);
00065     ~JDBController();
00066     void reConfig();
00067 
00068 protected:
00069     void queueCmd(DbgCommand *cmd, bool executeNext=false);
00070 
00071 private:
00072     QString getFile(QString className);
00073     void varUpdateDone();
00074     void parseBacktraceList   (char *buf);
00075     void parseLocals          (char *buf);
00076     void analyzeDump          (QString data);
00077     char* parseLine           (char *buf);
00078     char* parseInfo           (char *buf);
00079     char* parseBacktrace      (char *buf);
00080     char* parseLocalVars      (char *buf);
00081     char* parseDump           (char *buf);
00082     void parseLocals();
00083     void parseFrameSelected   (char *buf);
00084 
00085     char *parse               (char *buf);
00086 
00087     void pauseApp();
00088     void executeCmd ();
00089     void destroyCmds();
00090     void removeInfoRequests();
00091     void actOnProgramPause(const QString &msg);
00092     void programNoApp(const QString &msg, bool msgBox);
00093 
00094     void setBreakpoint(const QCString &BPSetCmd, int key);
00095     void clearBreakpoint(const QCString &BPClearCmd);
00096     void modifyBreakpoint(Breakpoint *BP);
00097 
00098     void setStateOn(int stateOn)    { state_ |= stateOn; }
00099     void setStateOff(int stateOff)  { state_ &= ~stateOff; }
00100     bool stateIsOn(int state)       { return state_  &state; }
00101 
00102     QString classpath_;
00103     QString mainclass_;
00104     QString projectDirectory_;
00105     QString curLine;
00106     QString curMethod, locals;
00107     QDict<JDBVarItem> localData;
00108     QStringList nameQueue;
00109     int s_command;
00110     int stackLineCount, varLineCount;
00111     bool parsedThis;
00112 public slots:
00113     void slotStart(const QString &application, const QString &args, const QString &sDbgShell=QString());
00114     void slotCoreFile(const QString &coreFile);
00115     void slotAttachTo(int pid);
00116 
00117     void slotRun();
00118     void slotRunUntil(const QString &filename, int lineNum);
00119     void slotStepInto();
00120     void slotStepOver();
00121     void slotStepIntoIns();
00122     void slotStepOverIns();
00123     void slotStepOutOff();
00124 
00125     void slotBreakInto();
00126     void slotBPState(Breakpoint *BP);
00127     void slotClearAllBreakpoints();
00128 
00129     void slotDisassemble(const QString &start, const QString &end);
00130     void slotMemoryDump(const QString &start, const QString &amount);
00131     void slotRegisters();
00132     void slotLibraries();
00133 
00134     void slotExpandItem(VarItem *parent);
00135     void slotExpandUserItem(VarItem *parent, const QCString &userRequest);
00136     void slotSelectFrame(int frame);
00137     void slotSetLocalViewState(bool onOff);
00138 
00139 protected slots:
00140     void slotDbgStdout(KProcess *proc, char *buf, int buflen);
00141     void slotDbgStderr(KProcess *proc, char *buf, int buflen);
00142     void slotDbgWroteStdin(KProcess *proc);
00143     void slotDbgProcessExited(KProcess *proc);
00144     void slotStepInSource(const QString &fileName, int lineNum);
00145     void slotDbgStatus(const QString &status, int state);
00146     void slotDebuggerStarted();
00147 
00148 private slots:
00149     void slotAbortTimedEvent();
00150 
00151 signals:
00152     void rawData              (const QString &rawData);
00153     void showStepInSource     (const QString &fileName, int lineNum, const QString &address);
00154     void rawJDBBreakpointList (char *buf);
00155     void rawJDBBreakpointSet  (char *buf, int key);
00156     void rawJDBDisassemble    (char *buf);
00157     void rawJDBMemoryDump     (char *buf);
00158     void rawJDBRegisters      (char *buf);
00159     void rawJDBLibraries      (char *buf);
00160     void ttyStdout            (const char *output);
00161     void ttyStderr            (const char *output);
00162     void dbgStatus            (const QString &status, int statusFlag);
00163     void acceptPendingBPs     ();
00164     void unableToSetBPNow     (int BPNo);
00165     void debuggerStarted      ();
00166 
00167 private:
00168     FramestackWidget* frameStack_;
00169     VariableTree*     varTree_;
00170     int               currentFrame_;
00171 
00172     int               state_;
00173     int               jdbSizeofBuf_;          // size of the output buffer
00174     int               jdbOutputLen_;          // amount of data in the output buffer
00175     char*             jdbOutput_;             // buffer for the output from kprocess
00176 
00177     QPtrList<DbgCommand> cmdList_;
00178     DbgCommand*       currentCmd_;
00179 
00180     STTY*             tty_;
00181     bool              programHasExited_;
00182 
00183     // Configuration values
00184     bool    config_breakOnLoadingLibrary_;
00185     bool    config_forceBPSet_;
00186     bool    config_displayStaticMembers_;
00187     bool    config_dbgTerminal_;
00188     QString config_jdbPath_;
00189 };
00190 
00191 }
00192 
00193 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:03:47 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003