diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index c1459cf873545363127f40e5ba0eb620dd945109..e051804c1ae70690bcd3ef758744a0e2e692592b 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -34,6 +34,7 @@ #include "stackframe.h" #include <texteditor/basetextmark.h> +#include <utils/qtcassert.h> #include <QtCore/QDebug> #include <QtCore/QTextStream> @@ -203,32 +204,35 @@ QString BreakpointData::toToolTip() const { QString rc; QTextStream str(&rc); - str << "<html><body><table>"; - str << "<tr><td>" << BreakHandler::tr("Marker File:") - << "</td><td>" << markerFileName << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Marker Line:") - << "</td><td>" << markerLineNumber << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Breakpoint Number:") - << "</td><td>" << bpNumber << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Breakpoint Address:") - << "</td><td>" << bpAddress << "</td></tr>"; - str << "</table><br><hr><table>"; - str << "<tr><th>" << BreakHandler::tr("Property") + str << "<html><body><table>" + << "<tr><td>" << BreakHandler::tr("Marker File:") + << "</td><td>" << markerFileName << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Marker Line:") + << "</td><td>" << markerLineNumber << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Breakpoint Number:") + << "</td><td>" << bpNumber << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Breakpoint Address:") + << "</td><td>" << bpAddress << "</td></tr>" + << "</table><br><hr><table>" + << "<tr><th>" << BreakHandler::tr("Property") << "</th><th>" << BreakHandler::tr("Requested") - << "</th><th>" << BreakHandler::tr("Obtained") << "</th></tr>"; - str << "<tr><td>" << BreakHandler::tr("Internal Number:") - << "</td><td>—</td><td>" << bpNumber << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("File Name:") - << "</td><td>" << fileName << "</td><td>" << bpFileName << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Function Name:") - << "</td><td>" << funcName << "</td><td>" << bpFuncName << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Line Number:") - << "</td><td>" << lineNumber << "</td><td>" << bpLineNumber << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Condition:") - << "</td><td>" << condition << "</td><td>" << bpCondition << "</td></tr>"; - str << "<tr><td>" << BreakHandler::tr("Ignore Count:") - << "</td><td>" << ignoreCount << "</td><td>" << bpIgnoreCount << "</td></tr>"; - str << "</table></body></html>"; + << "</th><th>" << BreakHandler::tr("Obtained") << "</th></tr>" + << "<tr><td>" << BreakHandler::tr("Internal Number:") + << "</td><td>—</td><td>" << bpNumber << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("File Name:") + << "</td><td>" << fileName << "</td><td>" << bpFileName << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Function Name:") + << "</td><td>" << funcName << "</td><td>" << bpFuncName << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Line Number:") + << "</td><td>" << lineNumber << "</td><td>" << bpLineNumber << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Corrected Line Number:") + << "</td><td>" << lineNumber + << "</td><td>" << bpCorrectedLineNumber << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Condition:") + << "</td><td>" << condition << "</td><td>" << bpCondition << "</td></tr>" + << "<tr><td>" << BreakHandler::tr("Ignore Count:") + << "</td><td>" << ignoreCount << "</td><td>" << bpIgnoreCount << "</td></tr>" + << "</table></body></html>"; return rc; } @@ -236,19 +240,19 @@ QString BreakpointData::toString() const { QString rc; QTextStream str(&rc); - str << BreakHandler::tr("Marker File:") << markerFileName << ' '; - str << BreakHandler::tr("Marker Line:") << markerLineNumber << ' '; - str << BreakHandler::tr("Breakpoint Number:") << bpNumber << ' '; - str << BreakHandler::tr("Breakpoint Address:") << bpAddress << '\n'; - str << BreakHandler::tr("File Name:") - << fileName << " -- " << bpFileName << '\n'; - str << BreakHandler::tr("Function Name:") - << funcName << " -- " << bpFuncName << '\n'; - str << BreakHandler::tr("Line Number:") - << lineNumber << " -- " << bpLineNumber << '\n'; - str << BreakHandler::tr("Condition:") - << condition << " -- " << bpCondition << '\n'; - str << BreakHandler::tr("Ignore Count:") + str << BreakHandler::tr("Marker File:") << markerFileName << ' ' + << BreakHandler::tr("Marker Line:") << markerLineNumber << ' ' + << BreakHandler::tr("Breakpoint Number:") << bpNumber << ' ' + << BreakHandler::tr("Breakpoint Address:") << bpAddress << '\n' + << BreakHandler::tr("File Name:") + << fileName << " -- " << bpFileName << '\n' + << BreakHandler::tr("Function Name:") + << funcName << " -- " << bpFuncName << '\n' + << BreakHandler::tr("Line Number:") + << lineNumber << " -- " << bpLineNumber << '\n' + << BreakHandler::tr("Condition:") + << condition << " -- " << bpCondition << '\n' + << BreakHandler::tr("Ignore Count:") << ignoreCount << " -- " << bpIgnoreCount << '\n'; return rc; } @@ -269,7 +273,7 @@ bool BreakpointData::isLocatedAt(const QString &fileName_, int lineNumber_) cons bool BreakpointData::conditionsMatch() const { - // same versions of gdb "beautify" the passed condition + // Some versions of gdb "beautify" the passed condition. QString s1 = condition; s1.remove(QChar(' ')); QString s2 = bpCondition; @@ -316,6 +320,12 @@ bool BreakHandler::hasPendingBreakpoints() const return false; } +BreakpointData *BreakHandler::at(int index) const +{ + QTC_ASSERT(index < size(), return 0); + return m_bp.at(index); +} + void BreakHandler::removeAt(int index) { BreakpointData *data = at(index); @@ -443,7 +453,7 @@ void BreakHandler::resetBreakpoints() data->bpCondition.clear(); data->bpIgnoreCount.clear(); data->bpAddress.clear(); - // keep marker data if it was primary + // Keep marker data if it was primary. if (data->markerFileName != data->fileName) data->markerFileName.clear(); if (data->markerLineNumber != data->lineNumber.toInt()) @@ -728,7 +738,6 @@ void BreakHandler::loadSessionData() void BreakHandler::activateBreakpoint(int index) { const BreakpointData *data = at(index); - //qDebug() << "BREAKPOINT ACTIVATED: " << data->fileName; if (!data->markerFileName.isEmpty()) { StackFrame frame; frame.file = data->markerFileName; @@ -739,7 +748,8 @@ void BreakHandler::activateBreakpoint(int index) void BreakHandler::breakByFunction(const QString &functionName) { - // One per function is enough for now + // One breakpoint per function is enough for now. This does not handle + // combinations of multiple conditions and ignore counts, though. for (int index = size(); --index >= 0;) { const BreakpointData *data = at(index); QTC_ASSERT(data, break); diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h index d6719106394bfa8c2b440c1dda196424b19f6c27..63ac4efbb5253982eb06c9e4919781fa2710e390 100644 --- a/src/plugins/debugger/breakhandler.h +++ b/src/plugins/debugger/breakhandler.h @@ -30,8 +30,6 @@ #ifndef DEBUGGER_BREAKHANDLER_H #define DEBUGGER_BREAKHANDLER_H -#include <utils/qtcassert.h> - #include <QtCore/QObject> #include <QtCore/QAbstractTableModel> #include <QtGui/QIcon> @@ -66,41 +64,42 @@ public: private: // Intentionally unimplemented. - // Making it copiable is tricky because of the markers. + // Making it copyable is tricky because of the markers. void operator=(const BreakpointData &); BreakpointData(const BreakpointData &); // Our owner - BreakHandler *m_handler; // not owned. + BreakHandler *m_handler; // Not owned. public: - bool enabled; // should we talk to the debugger engine? - bool pending; // does the debugger engine know about us already? - - // this "user requested information". will get stored in the session - QString fileName; // short name of source file - QByteArray condition; // condition associated with breakpoint - QByteArray ignoreCount; // ignore count associated with breakpoint - QByteArray lineNumber; // line in source file - QString funcName; // name of containing function - bool useFullPath; // should we use the full path when setting the bp? - - // this is what gdb produced in response - QByteArray bpNumber; // breakpoint number assigned by the debugger engine - QByteArray bpCondition; // condition acknowledged by the debugger engine - QByteArray bpIgnoreCount;// ignore count acknowledged by the debugger engine - QString bpFileName; // file name acknowledged by the debugger engine - QByteArray bpLineNumber; // line number acknowledged by the debugger engine - QString bpFuncName; // function name acknowledged by the debugger engine - QByteArray bpAddress; // address acknowledged by the debugger engine - bool bpMultiple; // happens in constructors/gdb - bool bpEnabled; // enable/disable command sent - - // taken from either user input or gdb responses - QString markerFileName; // used to locate the marker + bool enabled; // Should we talk to the debugger engine? + bool pending; // Does the debugger engine know about us already? + + // This "user requested information" will get stored in the session. + QString fileName; // Short name of source file. + QByteArray condition; // Condition associated with breakpoint. + QByteArray ignoreCount; // Ignore count associated with breakpoint. + QByteArray lineNumber; // Line in source file. + QString funcName; // Name of containing function. + bool useFullPath; // Should we use the full path when setting the bp? + + // This is what gdb produced in response. + QByteArray bpNumber; // Breakpoint number assigned by the debugger engine. + QByteArray bpCondition; // Condition acknowledged by the debugger engine. + QByteArray bpIgnoreCount;// Ignore count acknowledged by the debugger engine. + QString bpFileName; // File name acknowledged by the debugger engine. + QByteArray bpLineNumber; // Line number acknowledged by the debugger engine. + QByteArray bpCorrectedLineNumber; // Acknowledged by the debugger engine. + QString bpFuncName; // Function name acknowledged by the debugger engine. + QByteArray bpAddress; // Address acknowledged by the debugger engine. + bool bpMultiple; // Happens in constructors/gdb. + bool bpEnabled; // Enable/disable command sent. + + // Taken from either user input or gdb responses. + QString markerFileName; // Used to locate the marker. int markerLineNumber; - // our red blob in the editor + // Our red blob in the editor. BreakpointMarker *marker; }; @@ -126,23 +125,23 @@ public: QAbstractItemModel *model() { return this; } - BreakpointData *at(int index) const { QTC_ASSERT(index < size(), return 0); return m_bp.at(index); } + BreakpointData *at(int index) const; int size() const { return m_bp.size(); } bool hasPendingBreakpoints() const; void append(BreakpointData *data); - void removeAt(int index); // also deletes the marker - void clear(); // also deletes all the marker + void removeAt(int index); // This also deletes the marker. + void clear(); // This also deletes all the marker. int indexOf(BreakpointData *data) { return m_bp.indexOf(data); } int findBreakpoint(const QString &fileName, int lineNumber); - int findBreakpoint(const BreakpointData &data); // returns index - int findBreakpoint(int bpNumber); // returns index + int findBreakpoint(const BreakpointData &data); // Returns index. + int findBreakpoint(int bpNumber); // Returns index. void updateMarkers(); QList<BreakpointData *> insertedBreakpoints() const; void takeInsertedBreakPoint(BreakpointData *); - QList<BreakpointData *> takeRemovedBreakpoints(); // owned - QList<BreakpointData *> takeEnabledBreakpoints(); // not owned - QList<BreakpointData *> takeDisabledBreakpoints(); // not owned + QList<BreakpointData *> takeRemovedBreakpoints(); // Owned. + QList<BreakpointData *> takeEnabledBreakpoints(); // Not owned. + QList<BreakpointData *> takeDisabledBreakpoints(); // Not owned. QIcon breakpointIcon() const { return m_breakpointIcon; } QIcon disabledBreakpointIcon() const { return m_disabledBreakpointIcon; } @@ -177,12 +176,12 @@ private: const QIcon m_disabledBreakpointIcon; const QIcon m_pendingBreakPointIcon; - DebuggerManager *m_manager; // not owned + DebuggerManager *m_manager; // Not owned. QList<BreakpointData *> m_bp; - QList<BreakpointData *> m_inserted; // lately inserted breakpoints - QList<BreakpointData *> m_removed; // lately removed breakpoints - QList<BreakpointData *> m_enabled; // lately enabled breakpoints - QList<BreakpointData *> m_disabled; // lately disabled breakpoints + QList<BreakpointData *> m_inserted; // Lately inserted breakpoints. + QList<BreakpointData *> m_removed; // Lately removed breakpoints. + QList<BreakpointData *> m_enabled; // Lately enabled breakpoints. + QList<BreakpointData *> m_disabled; // Lately disabled breakpoints. }; } // namespace Internal