breakpoint.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _BREAKPOINT_H_
00017 #define _BREAKPOINT_H_
00018
00019 #include <klocale.h>
00020
00021 #include <qstring.h>
00022
00023
00024
00025
00026
00027 namespace GDBDebugger
00028 {
00029
00030 enum BP_TYPES
00031 {
00032 BP_TYPE_Invalid,
00033 BP_TYPE_FilePos,
00034 BP_TYPE_Watchpoint,
00035 BP_TYPE_Address,
00036 BP_TYPE_Function
00037 };
00038
00039 class Breakpoint
00040 {
00041 public:
00042 Breakpoint(bool temporary=false, bool enabled=true);
00043 virtual ~Breakpoint();
00044
00045 virtual QString dbgSetCommand() const = 0;
00046 virtual QString dbgRemoveCommand() const;
00047 virtual bool match(const Breakpoint* brkpt) const = 0;
00048 virtual void reset();
00049
00050 void setActive(int active, int id);
00051 bool isActive(int active) const { return (active_ == active) ||
00052 (s_pending_ && !s_actionClear_); }
00053 void setEnabled(bool enabled) { s_changedEnable_ = (s_enabled_ != enabled);
00054 s_enabled_ = enabled; }
00055 bool isEnabled() const { return s_enabled_; }
00056 void setTemporary(bool temporary) { s_temporary_ = temporary; }
00057 bool isTemporary() const { return s_temporary_; }
00058 void setHardwareBP(bool hardwareBP) { s_hardwareBP_ = hardwareBP; }
00059 bool isHardwareBP() const { return s_hardwareBP_; }
00060 void setIgnoreCount(int ignoreCount) { s_changedIgnoreCount_ =
00061 (ignoreCount_ != ignoreCount);
00062 ignoreCount_ = ignoreCount; }
00063 int ignoreCount() const { return ignoreCount_; }
00064 void setAddress(const QString &address) { address_ = address; }
00065 QString address() const { return address_; }
00066 void setConditional(const QString &condition) { s_changedCondition_ =
00067 (condition_ != condition);
00068 condition_ = condition; }
00069 QString conditional() const { return condition_; }
00070
00071 bool changedCondition() const { return s_changedCondition_; }
00072 bool changedIgnoreCount() const { return s_changedIgnoreCount_; }
00073 bool changedEnable() const { return s_changedEnable_; }
00074
00075 void setPending(bool pending) { s_pending_ = pending; }
00076 bool isPending() const { return s_pending_; }
00077 void setActionAdd(bool actionAdd) { s_actionDie_ = false;
00078 s_actionAdd_ = actionAdd; }
00079 bool isActionAdd() const { return s_actionAdd_; }
00080 void setActionClear(bool actionClear) { s_actionClear_ = actionClear; }
00081 bool isActionClear() const { return s_actionClear_; }
00082 void setActionModify(bool actionModify) { s_actionDie_ = false;
00083 s_actionModify_ = actionModify; }
00084 bool isActionModify() const { return s_actionModify_; }
00085 void setDbgProcessing(bool dbgProcessing) { s_dbgProcessing_ = dbgProcessing; }
00086 bool isDbgProcessing() const { return s_dbgProcessing_; }
00087 void setActionDie() { s_actionDie_ = true;
00088 s_actionClear_ = false; }
00089 bool isActionDie() const { return s_actionDie_; }
00090
00091 int key() const { return key_; }
00092 void setDbgId(int dbgId) { dbgId_ = dbgId; }
00093 int dbgId() const { return dbgId_; }
00094 void setHits(int hits) { hits_ = hits; }
00095 int hits() const { return hits_; }
00096
00097 virtual QString statusDisplay(int activeFlag) const;
00098 virtual BP_TYPES type() const { return BP_TYPE_Invalid; }
00099 virtual QString displayType() const { return i18n( "Invalid" ); }
00100
00101 virtual QString location(bool compact=true) = 0;
00102 virtual void setLocation(const QString& ) = 0;
00103 virtual bool isValid() const = 0;
00104
00105 private:
00106 bool s_pending_ :1;
00107 bool s_actionAdd_ :1;
00108 bool s_actionClear_ :1;
00109 bool s_actionModify_ :1;
00110 bool s_actionDie_ :1;
00111 bool s_dbgProcessing_ :1;
00112 bool s_enabled_ :1;
00113 bool s_temporary_ :1;
00114 bool s_changedCondition_ :1;
00115 bool s_changedIgnoreCount_ :1;
00116 bool s_changedEnable_ :1;
00117 bool s_hardwareBP_ :1;
00118
00119 int dbgId_;
00120 int hits_;
00121
00122 int key_;
00123 int active_;
00124
00125 int ignoreCount_;
00126 QString address_;
00127 QString condition_;
00128
00129 };
00130
00131
00132
00133
00134 class FilePosBreakpoint : public Breakpoint
00135 {
00136 public:
00137 FilePosBreakpoint(const QString &fileName, int lineNum,
00138 bool temporary=false, bool enabled=true);
00139 virtual ~FilePosBreakpoint();
00140 virtual QString dbgSetCommand() const;
00141 virtual bool match(const Breakpoint *brkpt) const;
00142
00143 BP_TYPES type () const { return BP_TYPE_FilePos; }
00144 QString displayType() const { return i18n( "File:line" ); }
00145 void setFileName(const QString& fileName) { fileName_ = fileName; }
00146 QString fileName() const { return fileName_; }
00147 void setLineNum(int lineNum) { lineNo_ = lineNum; }
00148 int lineNum() const { return lineNo_; }
00149 QString location(bool compact=true);
00150 void setLocation(const QString& location);
00151 bool isValid() const { return lineNo_>0 && !fileName_.isEmpty(); }
00152
00153 private:
00154 QString fileName_;
00155 int lineNo_;
00156 };
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193 class Watchpoint : public Breakpoint
00194 {
00195 public:
00196 Watchpoint(const QString &varName, bool temporary=false, bool enabled=true);
00197 virtual ~Watchpoint();
00198 virtual QString dbgSetCommand() const;
00199 bool match(const Breakpoint *brkpt) const;
00200
00201 BP_TYPES type () const { return BP_TYPE_Watchpoint; }
00202 QString displayType() const { return i18n("Watchpoint"); }
00203 void setVarName(const QString& varName) { varName_ = varName; }
00204 QString varName() const { return varName_; }
00205 QString location(bool) { return varName_; }
00206 void setLocation(const QString& location) { varName_ = location; }
00207 bool isValid() const { return !varName_.isEmpty(); }
00208
00209 private:
00210 QString varName_;
00211 };
00212
00213
00214
00215 class AddressBreakpoint : public Breakpoint
00216 {
00217 public:
00218 AddressBreakpoint(const QString &breakAddress, bool temporary=false, bool enabled=true);
00219 virtual ~AddressBreakpoint();
00220 virtual QString dbgSetCommand() const;
00221 bool match(const Breakpoint *brkpt) const;
00222
00223 BP_TYPES type () const { return BP_TYPE_Address; }
00224 QString displayType() const { return i18n("Address"); }
00225 void setBreakAddress(const QString& breakAddress) { m_breakAddress = breakAddress; }
00226 QString breakAddress() const { return m_breakAddress; }
00227 QString location(bool) { return m_breakAddress; };
00228 void setLocation(const QString& location) { m_breakAddress = location; }
00229 bool isValid() const { return !m_breakAddress.isEmpty(); }
00230
00231 private:
00232 QString m_breakAddress;
00233 };
00234
00235
00236
00237 class FunctionBreakpoint : public Breakpoint
00238 {
00239 public:
00240 FunctionBreakpoint(const QString &functionName, bool temporary=false, bool enabled=true);
00241 virtual ~FunctionBreakpoint();
00242 virtual QString dbgSetCommand() const;
00243 bool match(const Breakpoint *brkpt) const;
00244
00245 BP_TYPES type () const { return BP_TYPE_Function; }
00246 QString displayType() const { return i18n("Method()"); }
00247 void setfunctionName(const QString& functionName) { m_functionName = functionName; }
00248 QString functionName() const { return m_functionName; }
00249 QString location(bool) { return m_functionName; };
00250 void setLocation(const QString& location) { m_functionName = location; }
00251 bool isValid() const { return !m_functionName.isEmpty(); }
00252
00253 private:
00254 QString m_functionName;
00255 };
00256
00257
00258
00259
00260 }
00261
00262 #endif
This file is part of the documentation for KDevelop Version 3.1.2.