diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp index 51af8db4b7022d5a837bd321140019419da10c6b..0855102892e72c2b41ffba099e6d47d8b506b050 100644 --- a/src/plugins/debugger/cdb/cdbdebugengine.cpp +++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp @@ -1257,8 +1257,13 @@ bool CdbDebugEnginePrivate::attemptBreakpointSynchronization(QString *errorMessa return ok; } -void CdbDebugEngine::reloadDisassembler() +void CdbDebugEngine::fetchDisassembler(DisassemblerViewAgent *agent, + const StackFrame &frame) { + // was: void CdbDebugEngine::reloadDisassembler() + // use agent->address() to create a listing + +/* enum { ContextLines = 40 }; // Do we have a top stack frame? const ULONG64 offset = m_d->m_currentStackTrace ? m_d->m_currentStackTrace->instructionOffset() : ULONG64(0); @@ -1283,6 +1288,7 @@ void CdbDebugEngine::reloadDisassembler() } else { dh->setLines(QList<DisassemblerLine>()); } +*/ } void CdbDebugEngine::reloadModules() diff --git a/src/plugins/debugger/cdb/cdbdebugengine.h b/src/plugins/debugger/cdb/cdbdebugengine.h index 606ca3c00df3bb3c0512ade4987a8c62d7b7d49a..995347e7a950a06deb6c959d0e2ca00fe99950c9 100644 --- a/src/plugins/debugger/cdb/cdbdebugengine.h +++ b/src/plugins/debugger/cdb/cdbdebugengine.h @@ -39,6 +39,7 @@ namespace Debugger { namespace Internal { class DebuggerManager; +class DisassemblerViewAgent; class CdbDebugEventCallback; class CdbDebugOutput; struct CdbDebugEnginePrivate; @@ -86,7 +87,8 @@ public: virtual void attemptBreakpointSynchronization(); - virtual void reloadDisassembler(); + virtual void fetchDisassembler(DisassemblerViewAgent *agent, + const StackFrame &frame); virtual void reloadModules(); virtual void loadSymbols(const QString &moduleName); diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index f6b56bb66ddfc17284192e7ae996fd093642720a..674bf5a5731313d2aca3da6ec513617c389544c9 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -29,8 +29,6 @@ HEADERS += \ debuggerplugin.h \ debuggerrunner.h \ debuggertooltip.h \ - disassemblerhandler.h \ - disassemblerwindow.h \ watchutils.h \ idebuggerengine.h \ imports.h \ @@ -59,8 +57,6 @@ SOURCES += \ debuggerplugin.cpp \ debuggerrunner.cpp \ debuggertooltip.cpp \ - disassemblerhandler.cpp \ - disassemblerwindow.cpp \ watchutils.cpp \ moduleshandler.cpp \ moduleswindow.cpp \ diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 76b253726be95c86fa880fd0a39bcca08b89ceb5..72a59a1921f8bddc29c293cb07a80ac2b4b6da36 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -35,7 +35,6 @@ #include "idebuggerengine.h" #include "breakwindow.h" -#include "disassemblerwindow.h" #include "debuggeroutputwindow.h" #include "moduleswindow.h" #include "registerwindow.h" @@ -44,7 +43,6 @@ #include "threadswindow.h" #include "watchwindow.h" -#include "disassemblerhandler.h" #include "breakhandler.h" #include "moduleshandler.h" #include "registerhandler.h" @@ -208,7 +206,6 @@ void DebuggerManager::init() m_runControl = 0; - m_disassemblerHandler = 0; m_modulesHandler = 0; m_registerHandler = 0; @@ -216,7 +213,6 @@ void DebuggerManager::init() m_statusLabel->setMinimumSize(QSize(30, 10)); m_breakWindow = new BreakWindow; - m_disassemblerWindow = new DisassemblerWindow; m_modulesWindow = new ModulesWindow(this); m_outputWindow = new DebuggerOutputWindow; m_registerWindow = new RegisterWindow(this); @@ -252,14 +248,6 @@ void DebuggerManager::init() connect(threadsView, SIGNAL(threadSelected(int)), this, SLOT(selectThread(int))); - // Disassembler - m_disassemblerHandler = new DisassemblerHandler; - QAbstractItemView *disassemblerView = - qobject_cast<QAbstractItemView *>(m_disassemblerWindow); - disassemblerView->setModel(m_disassemblerHandler->model()); - connect(m_disassemblerWindow, SIGNAL(reloadDisassemblerRequested()), - this, SLOT(reloadDisassembler())); - // Breakpoints m_breakHandler = new BreakHandler(this); QAbstractItemView *breakView = @@ -419,10 +407,6 @@ void DebuggerManager::init() m_breakDock = m_mainWindow->addDockForWidget(m_breakWindow); - m_disassemblerDock = m_mainWindow->addDockForWidget(m_disassemblerWindow); - connect(m_disassemblerDock->toggleViewAction(), SIGNAL(toggled(bool)), - this, SLOT(reloadDisassembler()), Qt::QueuedConnection); - m_modulesDock = m_mainWindow->addDockForWidget(m_modulesWindow); connect(m_modulesDock->toggleViewAction(), SIGNAL(toggled(bool)), this, SLOT(reloadModules()), Qt::QueuedConnection); @@ -505,7 +489,6 @@ void DebuggerManager::setSimpleDockWidgetArrangement() } m_mainWindow->tabifyDockWidget(m_watchDock, m_breakDock); - m_mainWindow->tabifyDockWidget(m_watchDock, m_disassemblerDock); m_mainWindow->tabifyDockWidget(m_watchDock, m_modulesDock); m_mainWindow->tabifyDockWidget(m_watchDock, m_outputDock); m_mainWindow->tabifyDockWidget(m_watchDock, m_registerDock); @@ -516,7 +499,6 @@ void DebuggerManager::setSimpleDockWidgetArrangement() // saves cycles since the corresponding information won't be retrieved. m_sourceFilesDock->hide(); m_registerDock->hide(); - m_disassemblerDock->hide(); m_modulesDock->hide(); m_outputDock->hide(); m_mainWindow->setTrackingEnabled(true); @@ -613,7 +595,6 @@ void DebuggerManager::shutdown() // Delete these manually before deleting the manager // (who will delete the models for most views) doDelete(m_breakWindow); - doDelete(m_disassemblerWindow); doDelete(m_modulesWindow); doDelete(m_outputWindow); doDelete(m_registerWindow); @@ -625,7 +606,6 @@ void DebuggerManager::shutdown() doDelete(m_localsWindow); doDelete(m_breakHandler); - doDelete(m_disassemblerHandler); doDelete(m_threadsHandler); doDelete(m_modulesHandler); doDelete(m_registerHandler); @@ -759,7 +739,7 @@ static IDebuggerEngine *determineDebuggerEngine(const QString &executable, return scriptEngine; } -#ifndef Q_OS_WIN +#ifndef Q_OS_WIN Q_UNUSED(settingsIdHint) if (!gdbEngine) { *errorMessage = msgEngineNotAvailable("Gdb Engine"); @@ -876,7 +856,6 @@ void DebuggerManager::cleanupViews() breakHandler()->setAllPending(); stackHandler()->removeAll(); threadsHandler()->removeAll(); - disassemblerHandler()->removeAll(); modulesHandler()->removeAll(); watchHandler()->cleanup(); m_sourceFilesWindow->removeAll(); @@ -1176,7 +1155,6 @@ void DebuggerManager::setBusyCursor(bool busy) QCursor cursor(busy ? Qt::BusyCursor : Qt::ArrowCursor); m_breakWindow->setCursor(cursor); - m_disassemblerWindow->setCursor(cursor); m_localsWindow->setCursor(cursor); m_modulesWindow->setCursor(cursor); m_outputWindow->setCursor(cursor); @@ -1308,25 +1286,6 @@ void DebuggerManager::stepByInstructionTriggered() } -////////////////////////////////////////////////////////////////////// -// -// Disassembler specific stuff -// -////////////////////////////////////////////////////////////////////// - -void DebuggerManager::reloadDisassembler() -{ - if (m_engine && m_disassemblerDock && m_disassemblerDock->isVisible()) - m_engine->reloadDisassembler(); -} - -void DebuggerManager::disassemblerDockToggled(bool on) -{ - if (on) - reloadDisassembler(); -} - - ////////////////////////////////////////////////////////////////////// // // Source files specific stuff diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 8bf7e2a3aef69a222831cbbb64a8fd651570af75..2df7d9c5ab582da93ff18e54faf8fed51255b942 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -73,7 +73,6 @@ class DebugMode; class BreakHandler; class BreakpointData; -class DisassemblerHandler; class ModulesHandler; class RegisterHandler; class SourceFilesWindow; @@ -219,7 +218,6 @@ private: virtual void notifyInferiorExited() = 0; virtual void notifyInferiorPidChanged(qint64) = 0; - virtual DisassemblerHandler *disassemblerHandler() = 0; virtual ModulesHandler *modulesHandler() = 0; virtual BreakHandler *breakHandler() = 0; virtual RegisterHandler *registerHandler() = 0; @@ -232,7 +230,6 @@ private: virtual void showDebuggerOutput(int channel, const QString &msg) = 0; virtual void showDebuggerInput(int channel, const QString &msg) = 0; - virtual void reloadDisassembler() = 0; virtual void reloadModules() = 0; virtual void reloadSourceFiles() = 0; virtual void reloadRegisters() = 0; @@ -330,9 +327,6 @@ private slots: void showDebuggerInput(int channel, const QString &msg); void showApplicationOutput(const QString &data); - void reloadDisassembler(); - void disassemblerDockToggled(bool on); - void reloadSourceFiles(); void sourceFilesDockToggled(bool on); @@ -353,7 +347,6 @@ private: // // Implementation of IDebuggerManagerAccessForEngines // - DisassemblerHandler *disassemblerHandler() { return m_disassemblerHandler; } ModulesHandler *modulesHandler() { return m_modulesHandler; } BreakHandler *breakHandler() { return m_breakHandler; } RegisterHandler *registerHandler() { return m_registerHandler; } @@ -438,7 +431,6 @@ private: Core::Utils::FancyMainWindow *m_mainWindow; QLabel *m_statusLabel; QDockWidget *m_breakDock; - QDockWidget *m_disassemblerDock; QDockWidget *m_modulesDock; QDockWidget *m_outputDock; QDockWidget *m_registerDock; @@ -448,7 +440,6 @@ private: QDockWidget *m_watchDock; BreakHandler *m_breakHandler; - DisassemblerHandler *m_disassemblerHandler; ModulesHandler *m_modulesHandler; RegisterHandler *m_registerHandler; StackHandler *m_stackHandler; @@ -474,7 +465,6 @@ private: QAction *m_reverseDirectionAction; QWidget *m_breakWindow; - QWidget *m_disassemblerWindow; QWidget *m_localsWindow; QWidget *m_registerWindow; QWidget *m_modulesWindow; diff --git a/src/plugins/debugger/disassemblerhandler.cpp b/src/plugins/debugger/disassemblerhandler.cpp deleted file mode 100644 index b6089b15d588becb5c3842ea55cca2bd7317664e..0000000000000000000000000000000000000000 --- a/src/plugins/debugger/disassemblerhandler.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 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. -** -**************************************************************************/ - -#include "disassemblerhandler.h" - -#include <utils/qtcassert.h> - -#include <QtCore/QDebug> -#include <QtCore/QAbstractTableModel> - -#include <QtGui/QIcon> - -using namespace Debugger; -using namespace Debugger::Internal; - -void DisassemblerLine::clear() -{ - address.clear(); - symbol.clear(); - addressDisplay.clear(); - symbolDisplay.clear(); - mnemonic.clear(); -} - -////////////////////////////////////////////////////////////////// -// -// DisassemblerModel -// -////////////////////////////////////////////////////////////////// - -/*! A model to represent the stack in a QTreeView. */ -class Debugger::Internal::DisassemblerModel : public QAbstractTableModel -{ - Q_OBJECT - -public: - DisassemblerModel(QObject *parent); - - // ItemModel - int rowCount(const QModelIndex &parent = QModelIndex()) const; - int columnCount(const QModelIndex &parent = QModelIndex()) const; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - QVariant headerData(int section, Qt::Orientation orientation, - int role = Qt::DisplayRole) const; - - // Properties - void setLines(const QList<DisassemblerLine> &lines); - QList<DisassemblerLine> lines() const; - void setCurrentLine(int line) { m_currentLine = line; } - -private: - friend class DisassemblerHandler; - QList<DisassemblerLine> m_lines; - int m_currentLine; - QIcon m_positionIcon; - QIcon m_emptyIcon; -}; - -DisassemblerModel::DisassemblerModel(QObject *parent) - : QAbstractTableModel(parent), m_currentLine(0) -{ - m_emptyIcon = QIcon(":/debugger/images/empty.svg"); - m_positionIcon = QIcon(":/debugger/images/location.svg"); -} - -int DisassemblerModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return m_lines.size(); -} - -int DisassemblerModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return 3; -} - -QVariant DisassemblerModel::data(const QModelIndex &index, int role) const -{ - if (!index.isValid() || index.row() >= m_lines.size()) - return QVariant(); - - const DisassemblerLine &line = m_lines.at(index.row()); - - if (role == Qt::DisplayRole) { - switch (index.column()) { - case 0: - return line.addressDisplay; - case 1: - return line.symbolDisplay; - case 2: - return line.mnemonic; - } - } else if (role == Qt::ToolTipRole) { - return QString(); - } else if (role == Qt::DecorationRole && index.column() == 0) { - // Return icon that indicates whether this is the active stack frame - return (index.row() == m_currentLine) ? m_positionIcon : m_emptyIcon; - } - - return QVariant(); -} - -QVariant DisassemblerModel::headerData(int section, Qt::Orientation orientation, - int role) const -{ - if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { - switch (section) { - case 1: return DisassemblerHandler::tr("Address"); - case 2: return DisassemblerHandler::tr("Symbol"); - case 3: return DisassemblerHandler::tr("Mnemonic"); - }; - } - return QVariant(); -} - -void DisassemblerModel::setLines(const QList<DisassemblerLine> &lines) -{ - m_lines = lines; - if (m_currentLine >= m_lines.size()) - m_currentLine = m_lines.size() - 1; - reset(); -} - -QList<DisassemblerLine> DisassemblerModel::lines() const -{ - return m_lines; -} - - - -////////////////////////////////////////////////////////////////// -// -// DisassemblerHandler -// -////////////////////////////////////////////////////////////////// - -DisassemblerHandler::DisassemblerHandler() -{ - m_model = new DisassemblerModel(this); -} - -void DisassemblerHandler::removeAll() -{ - m_model->m_lines.clear(); -} - -QAbstractItemModel *DisassemblerHandler::model() const -{ - return m_model; -} - -void DisassemblerHandler::setLines(const QList<DisassemblerLine> &lines) -{ - m_model->setLines(lines); -} - -QList<DisassemblerLine> DisassemblerHandler::lines() const -{ - return m_model->lines(); -} - -void DisassemblerHandler::setCurrentLine(int line) -{ - m_model->setCurrentLine(line); -} - -#include "disassemblerhandler.moc" diff --git a/src/plugins/debugger/disassemblerhandler.h b/src/plugins/debugger/disassemblerhandler.h deleted file mode 100644 index cb926225004287b07f73a552f7eb68bf96996717..0000000000000000000000000000000000000000 --- a/src/plugins/debugger/disassemblerhandler.h +++ /dev/null @@ -1,77 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 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 DISASSEMBLERHANDLER_H -#define DISASSEMBLERHANDLER_H - -#include <QtCore/QObject> -#include <QtCore/QAbstractItemModel> - -#include <QtGui/QIcon> - -namespace Debugger { -namespace Internal { - -class DisassemblerLine -{ -public: - void clear(); - - QString address; - QString symbol; - QString addressDisplay; - QString symbolDisplay; - QString mnemonic; -}; - -class DisassemblerModel; - -class DisassemblerHandler : public QObject -{ - Q_OBJECT - -public: - DisassemblerHandler(); - QAbstractItemModel *model() const; - -public slots: - void removeAll(); - - void setLines(const QList<DisassemblerLine> &lines); - QList<DisassemblerLine> lines() const; - void setCurrentLine(int line); - -private: - DisassemblerModel *m_model; -}; - -} // namespace Internal -} // namespace Debugger - -#endif // DISASSEMBLERHANDLER_H diff --git a/src/plugins/debugger/disassemblerwindow.cpp b/src/plugins/debugger/disassemblerwindow.cpp deleted file mode 100644 index f8361a3cc946c0432af5fd1eb99ca17457147417..0000000000000000000000000000000000000000 --- a/src/plugins/debugger/disassemblerwindow.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 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. -** -**************************************************************************/ - -#include "disassemblerwindow.h" -#include "debuggeractions.h" - -#include <QAction> -#include <QDebug> -#include <QHeaderView> -#include <QMenu> -#include <QResizeEvent> - - -using namespace Debugger::Internal; - -DisassemblerWindow::DisassemblerWindow() - : m_alwaysResizeColumnsToContents(true), m_alwaysReloadContents(false) -{ - QAction *act = theDebuggerAction(UseAlternatingRowColors); - setWindowTitle(tr("Disassembler")); - setSortingEnabled(false); - setAlternatingRowColors(act->isChecked()); - setRootIsDecorated(false); - header()->hide(); - connect(act, SIGNAL(toggled(bool)), - this, SLOT(setAlternatingRowColorsHelper(bool))); -} - -void DisassemblerWindow::resizeEvent(QResizeEvent *ev) -{ - //QHeaderView *hv = header(); - //int totalSize = ev->size().width() - 110; - //hv->resizeSection(0, 60); - //hv->resizeSection(1, (totalSize * 50) / 100); - //hv->resizeSection(2, (totalSize * 50) / 100); - //hv->resizeSection(3, 50); - QTreeView::resizeEvent(ev); -} - -void DisassemblerWindow::contextMenuEvent(QContextMenuEvent *ev) -{ - QMenu menu; - - QAction *act1 = new QAction(tr("Adjust column widths to contents"), &menu); - QAction *act2 = new QAction(tr("Always adjust column widths to contents"), &menu); - act2->setCheckable(true); - // FIXME: make this a SavedAction - act2->setChecked(m_alwaysResizeColumnsToContents); - QAction *act3 = new QAction(tr("Reload disassembler listing"), &menu); - QAction *act4 = new QAction(tr("Always reload disassembler listing"), &menu); - act4->setCheckable(true); - act4->setChecked(m_alwaysReloadContents); - menu.addAction(act3); - //menu.addAction(act4); - menu.addSeparator(); - menu.addAction(act1); - menu.addAction(act2); - menu.addSeparator(); - menu.addAction(theDebuggerAction(SettingsDialog)); - - QAction *act = menu.exec(ev->globalPos()); - - if (act == act1) - resizeColumnsToContents(); - else if (act == act2) - setAlwaysResizeColumnsToContents(!m_alwaysResizeColumnsToContents); - else if (act == act3) - reloadContents(); - else if (act == act2) - setAlwaysReloadContents(!m_alwaysReloadContents); -} - -void DisassemblerWindow::resizeColumnsToContents() -{ - resizeColumnToContents(0); - resizeColumnToContents(1); - resizeColumnToContents(2); -} - -void DisassemblerWindow::setAlwaysResizeColumnsToContents(bool on) -{ - m_alwaysResizeColumnsToContents = on; - QHeaderView::ResizeMode mode = on - ? QHeaderView::ResizeToContents : QHeaderView::Interactive; - header()->setResizeMode(0, mode); - header()->setResizeMode(1, mode); - header()->setResizeMode(2, mode); -} - -void DisassemblerWindow::setAlwaysReloadContents(bool on) -{ - m_alwaysReloadContents = on; - if (m_alwaysReloadContents) - reloadContents(); -} - -void DisassemblerWindow::reloadContents() -{ - emit reloadDisassemblerRequested(); -} - - -void DisassemblerWindow::setModel(QAbstractItemModel *model) -{ - QTreeView::setModel(model); - setAlwaysResizeColumnsToContents(true); -} - diff --git a/src/plugins/debugger/disassemblerwindow.h b/src/plugins/debugger/disassemblerwindow.h deleted file mode 100644 index a7e1e9275b45a97f2877e5833736c9e63f33642d..0000000000000000000000000000000000000000 --- a/src/plugins/debugger/disassemblerwindow.h +++ /dev/null @@ -1,68 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 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 DEBUGGER_DISASSEMBLERWINDOW_H -#define DEBUGGER_DISASSEMBLERWINDOW_H - -#include <QTreeView> - -namespace Debugger { -namespace Internal { - -class DisassemblerWindow : public QTreeView -{ - Q_OBJECT - -public: - DisassemblerWindow(); - void setModel(QAbstractItemModel *model); - -signals: - void reloadDisassemblerRequested(); - -public slots: - void resizeColumnsToContents(); - void setAlwaysResizeColumnsToContents(bool on); - void reloadContents(); - void setAlwaysReloadContents(bool on); - void setAlternatingRowColorsHelper(bool on) { setAlternatingRowColors(on); } - -private: - void resizeEvent(QResizeEvent *ev); - void contextMenuEvent(QContextMenuEvent *ev); - - bool m_alwaysResizeColumnsToContents; - bool m_alwaysReloadContents; -}; - -} // namespace Internal -} // namespace Debugger - -#endif // DEBUGGER_DISASSEMBLERWINDOW_H - diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 74e8f6d13c997392d56eee56c7ad1c1bff7dc83f..8fccdffcc5447b6abffeec84b9fa2df641aea2be 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -41,7 +41,6 @@ #include "gdbmi.h" #include "procinterrupt.h" -#include "disassemblerhandler.h" #include "breakhandler.h" #include "moduleshandler.h" #include "registerhandler.h" @@ -244,7 +243,6 @@ void GdbEngine::initializeVariables() m_inbuffer.clear(); - m_address.clear(); m_currentFunctionArgs.clear(); m_currentFrame.clear(); m_dumperHelper.clear(); @@ -1271,18 +1269,6 @@ void GdbEngine::handleAsyncOutput2(const GdbMi &data) if (supportsThreads()) postCommand(_("-thread-list-ids"), WatchUpdate, CB(handleStackListThreads), currentId); - // - // Disassembler - // - // Linux: - //"79*stopped,reason="end-stepping-range",reason="breakpoint-hit",bkptno="1", - //thread-id="1",frame={addr="0x0000000000405d8f",func="run1", - //args=[{name="argc",value="1"},{name="argv",value="0x7fffb7c23058"}], - //file="test1.cpp",fullname="/home/apoenitz/dev/work/test1/test1.cpp",line="261"}" - // Mac: (but only sometimes) - m_address = _(data.findChild("frame").findChild("addr").data()); - qq->reloadDisassembler(); - // // Registers // @@ -2324,69 +2310,6 @@ void GdbEngine::attemptBreakpointSynchronization() } -////////////////////////////////////////////////////////////////////// -// -// Disassembler specific stuff -// -////////////////////////////////////////////////////////////////////// - -void GdbEngine::reloadDisassembler() -{ - emit postCommand(_("disassemble"), CB(handleDisassemblerList), m_address); -} - -void GdbEngine::handleDisassemblerList(const GdbResultRecord &record, - const QVariant &cookie) -{ - QString listedLine = cookie.toString(); - QList<DisassemblerLine> lines; - static const QString pad = _(" "); - int currentLine = -1; - if (record.resultClass == GdbResultDone) { - QString res = _(record.data.findChild("consolestreamoutput").data()); - QTextStream ts(&res, QIODevice::ReadOnly); - while (!ts.atEnd()) { - //0x0000000000405fd8 <_ZN11QTextStreamD1Ev@plt+0>: - // jmpq *2151890(%rip) # 0x6135b0 <_GLOBAL_OFFSET_TABLE_+640> - //0x0000000000405fde <_ZN11QTextStreamD1Ev@plt+6>: - // pushq $0x4d - //0x0000000000405fe3 <_ZN11QTextStreamD1Ev@plt+11>: - // jmpq 0x405af8 <_init+24> - //0x0000000000405fe8 <_ZN9QHashData6rehashEi@plt+0>: - // jmpq *2151882(%rip) # 0x6135b8 <_GLOBAL_OFFSET_TABLE_+648> - QString str = ts.readLine(); - if (!str.startsWith(__("0x"))) { - //qDebug() << "IGNORING DISASSEMBLER" << str; - continue; - } - DisassemblerLine line; - QTextStream ts(&str, QIODevice::ReadOnly); - ts >> line.address >> line.symbol; - line.mnemonic = ts.readLine().trimmed(); - if (line.symbol.endsWith(_c(':'))) - line.symbol.chop(1); - line.addressDisplay = line.address + pad; - if (line.addressDisplay.startsWith(__("0x00000000"))) - line.addressDisplay.replace(2, 8, QString()); - line.symbolDisplay = line.symbol + pad; - - if (line.address == listedLine) - currentLine = lines.size(); - - lines.append(line); - } - } else { - DisassemblerLine line; - line.addressDisplay = tr("<could not retreive module information>"); - lines.append(line); - } - - qq->disassemblerHandler()->setLines(lines); - if (currentLine != -1) - qq->disassemblerHandler()->setCurrentLine(currentLine); -} - - ////////////////////////////////////////////////////////////////////// // // Modules specific stuff diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 3f16bd3701c27c89ca0865afbc9314903f66f1e9..820c507bba25125bfeab8022149dea1d5b1450e0 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -288,16 +288,6 @@ private: void breakpointDataFromOutput(BreakpointData *data, const GdbMi &bkpt); void sendInsertBreakpoint(int index); - - // - // Disassembler specific stuff - // - void handleDisassemblerList(const GdbResultRecord &record, - const QVariant &cookie); - void reloadDisassembler(); - QString m_address; - - // // Modules specific stuff // diff --git a/src/plugins/debugger/idebuggerengine.h b/src/plugins/debugger/idebuggerengine.h index 16b6d5ace5a29fd57325808d89327f8c58e7a6e0..9bc57194699681ad9f628be9ca2f9625e36b481d 100644 --- a/src/plugins/debugger/idebuggerengine.h +++ b/src/plugins/debugger/idebuggerengine.h @@ -85,8 +85,6 @@ public: virtual void attemptBreakpointSynchronization() = 0; - virtual void reloadDisassembler() = 0; - virtual void reloadModules() = 0; virtual void loadSymbols(const QString &moduleName) = 0; virtual void loadAllSymbols() = 0; diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp index 44a9f610fc139a0168c7e1ed8780a994fd9f789e..0ef2fc01cad29beadda81f1af60f5f3935516405 100644 --- a/src/plugins/debugger/script/scriptengine.cpp +++ b/src/plugins/debugger/script/scriptengine.cpp @@ -33,7 +33,6 @@ #include "breakhandler.h" #include "debuggerconstants.h" #include "debuggermanager.h" -#include "disassemblerhandler.h" #include "moduleshandler.h" #include "registerhandler.h" #include "stackhandler.h" @@ -396,10 +395,6 @@ void ScriptEngine::attemptBreakpointSynchronization() handler->updateMarkers(); } -void ScriptEngine::reloadDisassembler() -{ -} - void ScriptEngine::loadSymbols(const QString &moduleName) { Q_UNUSED(moduleName) diff --git a/src/plugins/debugger/script/scriptengine.h b/src/plugins/debugger/script/scriptengine.h index 2a357e745e636a1a13ebd3871dfced1c3b79f79e..1f82a6ed5831db48e39af5ecffbb77bd6b220fe4 100644 --- a/src/plugins/debugger/script/scriptengine.h +++ b/src/plugins/debugger/script/scriptengine.h @@ -98,7 +98,6 @@ private: void loadSymbols(const QString &moduleName); void loadAllSymbols(); virtual QList<Symbol> moduleSymbols(const QString &moduleName); - void reloadDisassembler(); void reloadModules(); void reloadRegisters() {} void reloadSourceFiles() {} diff --git a/src/plugins/debugger/tcf/tcfengine.cpp b/src/plugins/debugger/tcf/tcfengine.cpp index 542be19e4dcaa7fe0108852d50270c0650871b20..0c98513b8ec4ac9163e537adce6f20319ba64a02 100644 --- a/src/plugins/debugger/tcf/tcfengine.cpp +++ b/src/plugins/debugger/tcf/tcfengine.cpp @@ -33,7 +33,6 @@ #include "breakhandler.h" #include "debuggerconstants.h" #include "debuggermanager.h" -#include "disassemblerhandler.h" #include "moduleshandler.h" #include "registerhandler.h" #include "stackhandler.h" @@ -305,10 +304,6 @@ void TcfEngine::attemptBreakpointSynchronization() { } -void TcfEngine::reloadDisassembler() -{ -} - void TcfEngine::loadSymbols(const QString &moduleName) { Q_UNUSED(moduleName) diff --git a/src/plugins/debugger/tcf/tcfengine.h b/src/plugins/debugger/tcf/tcfengine.h index 1d99dc97f7bd853f88bffecb9d52e27e0223c435..3d556427bd9ad079b2d557d0c6af0c16973cfdf3 100644 --- a/src/plugins/debugger/tcf/tcfengine.h +++ b/src/plugins/debugger/tcf/tcfengine.h @@ -104,7 +104,6 @@ private: void loadSymbols(const QString &moduleName); void loadAllSymbols(); virtual QList<Symbol> moduleSymbols(const QString &moduleName); - void reloadDisassembler(); void reloadModules(); void reloadRegisters() {} void reloadSourceFiles() {}