From bee04cf1f5829f43eeb6d71c1d1f1914ff387a8d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Mon, 13 Dec 2010 17:19:21 +0100 Subject: [PATCH] Debugger[CDBs 32bit]: Fix 'Jump to Line'. PC register is 'rip' for 64bit and 'eip' for 32bit. Task-number: QTCREATORBUG-3361 --- src/plugins/debugger/cdb/cdbengine.cpp | 8 +++++++- src/plugins/debugger/cdb2/cdbengine2.cpp | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index c4c7e6b375d..272f19b5618 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1035,12 +1035,18 @@ void CdbEngine::executeJumpToLine(const QString &fileName, int lineNumber) if (!setRegisterValueU64(m_d->interfaces().debugControl, m_d->interfaces().debugRegisters, - QLatin1String("rip"), address, &errorMessage)) +#ifdef Q_OS_WIN64 + QLatin1String("rip"), +#else + QLatin1String("eip"), +#endif + address, &errorMessage)) break; showMessage(QString::fromLatin1("Jumping to %1:%2 (0x%3)..."). arg(QDir::toNativeSeparators(fileName)).arg(lineNumber).arg(address, 0, 16)); StackFrame frame; + frame.usable = true; frame.file = fileName; frame.line = lineNumber; gotoLocation(frame, true); diff --git a/src/plugins/debugger/cdb2/cdbengine2.cpp b/src/plugins/debugger/cdb2/cdbengine2.cpp index f62879d2092..fe56f3f2aa9 100644 --- a/src/plugins/debugger/cdb2/cdbengine2.cpp +++ b/src/plugins/debugger/cdb2/cdbengine2.cpp @@ -815,7 +815,8 @@ void CdbEngine::handleJumpToLineAddressResolution(const CdbBuiltinCommandPtr &cm QByteArray registerCmd; ByteArrayInputStream str(registerCmd); - str << "r rip=0x" << answer; + // PC-register depending on 64/32bit. + str << "r " << (m_options->is64bit ? "rip" : "eip") << "=0x" << answer; postCommand(registerCmd, 0); gotoLocation(cookie.fileName, cookie.lineNumber, true); } -- GitLab