diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index 62035c48e69301662c85194cd1d7c89c12509630..50b9de2f7a98948396e9a8965c58d16e501e5fdc 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -52,6 +52,7 @@ HEADERS += breakhandler.h \ watchhandler.h \ watchutils.h \ watchwindow.h \ + threaddata.h \ threadshandler.h \ watchdelegatewidgets.h diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index acfb96ec8205b0254099e98dcd79f9a71e022f9b..523bcf31c8bf06bcf6e9ec773205eaf0bdc33f4c 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3033,7 +3033,7 @@ void GdbEngine::handleThreadNames(const GdbResponse &response) int id = name.findChild("id").data().toInt(); for (int index = 0, n = threads.size(); index != n; ++index) { ThreadData & thread = threads[index]; - if (thread.id == id) { + if (thread.id == (quint64)id) { thread.name = decodeData(name.findChild("value").data(), name.findChild("valueencoded").data().toInt()); break; } diff --git a/src/plugins/debugger/threaddata.h b/src/plugins/debugger/threaddata.h new file mode 100644 index 0000000000000000000000000000000000000000..aaa4c92bb66f9a1f66aca6ddb621afc0406473e8 --- /dev/null +++ b/src/plugins/debugger/threaddata.h @@ -0,0 +1,98 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef THREADDATA_H +#define THREADDATA_H + +#include <QtCore/QList> + +namespace Debugger { + +namespace Internal { + +//////////////////////////////////////////////////////////////////////// +// +// ThreadData +// +//////////////////////////////////////////////////////////////////////// + +/*! A structure containing information about a single thread */ +struct ThreadData +{ + inline ThreadData(quint64 threadid = 0) + : id (threadid) + , frameLevel(-1) + , address (0) + , lineNumber(-1) + { + } + + enum { + IdColumn, + AddressColumn, + FunctionColumn, + FileColumn, + LineColumn, + StateColumn, + NameColumn, + CoreColumn, + ColumnCount = CoreColumn + }; + + // Permanent data. + quint64 id; + QString targetId; + QString core; + + // State information when stopped + inline void notifyRunning() // Clear state information + { + address = 0; + function.clear(); + fileName.clear(); + frameLevel = -1; + state.clear(); + lineNumber = -1; + } + + qint32 frameLevel; + quint64 address; + QString function; + QString fileName; + QString state; + qint32 lineNumber; + QString name; +}; + +typedef QVector<ThreadData> Threads; + +} // namespace Internal +} // namespace Debugger + +#endif // THREADDATA_H diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp index 9309dea322964ae19eab327eb73f1cddb3710ba2..9b180042e3d3f171f5d1e36221eca98e71d1a29d 100644 --- a/src/plugins/debugger/threadshandler.cpp +++ b/src/plugins/debugger/threadshandler.cpp @@ -43,23 +43,6 @@ namespace Internal { // ThreadsHandler // /////////////////////////////////////////////////////////////////////// - -ThreadData::ThreadData(int threadId) -{ - notifyRunning(); - id = threadId; -} - -void ThreadData::notifyRunning() -{ - address = 0; - function.clear(); - fileName.clear(); - frameLevel = -1; - state.clear(); - lineNumber = -1; -} - static inline QString threadToolTip(const ThreadData &thread) { const char tableRowStartC[] = "<tr><td>"; @@ -239,7 +222,7 @@ void ThreadsHandler::setCurrentThreadId(int id) } } -int ThreadsHandler::indexOf(int threadId) const +int ThreadsHandler::indexOf(quint64 threadId) const { const int count = m_threads.size(); for(int i = 0; i < count; i++) diff --git a/src/plugins/debugger/threadshandler.h b/src/plugins/debugger/threadshandler.h index 5dfb6046c218a0b08f3336148d78f5e74de51d29..719b7abac204c8de29010c66209db0112974a4e9 100644 --- a/src/plugins/debugger/threadshandler.h +++ b/src/plugins/debugger/threadshandler.h @@ -35,55 +35,13 @@ #include <QtGui/QIcon> +#include "threaddata.h" namespace Debugger { class DebuggerEngine; namespace Internal { -//////////////////////////////////////////////////////////////////////// -// -// ThreadData -// -//////////////////////////////////////////////////////////////////////// - -/*! A structure containing information about a single thread */ -struct ThreadData -{ - ThreadData(int threadId = 0); - - enum { - IdColumn, - AddressColumn, - FunctionColumn, - FileColumn, - LineColumn, - StateColumn, - NameColumn, - CoreColumn, - ColumnCount = CoreColumn - }; - - // Permanent data. - int id; - QString targetId; - QString core; - - // State information when stopped - void notifyRunning(); // Clear state information - - int frameLevel; - quint64 address; - QString function; - QString fileName; - QString state; - int lineNumber; - QString name; -}; - -typedef QVector<ThreadData> Threads; - - //////////////////////////////////////////////////////////////////////// // // ThreadsHandler @@ -102,7 +60,7 @@ public: void setCurrentThread(int index); int currentThreadId() const; void setCurrentThreadId(int id); - int indexOf(int threadId) const; + int indexOf(quint64 threadId) const; void selectThread(int index); void setThreads(const Threads &threads);