summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2010-02-05 13:48:10 +0100
committerhjk <qtc-committer@nokia.com>2010-02-05 15:23:44 +0100
commit735b3489d402c6ed33d33233de6379d8ab000c94 (patch)
tree25a643c5104ccaa7fa2876bc8d8a75c65849bc93 /src
parent52dcc41021ef75905c65bcf4fd0f6d6349ad0c05 (diff)
downloadqt-creator-735b3489d402c6ed33d33233de6379d8ab000c94.tar.gz
debugger: fake hardware breakpoints work better with read-only memory
Diffstat (limited to 'src')
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp2
-rw-r--r--src/plugins/debugger/gdb/trkgdbadapter.cpp7
2 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index b74130e61b..697448b453 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -2021,6 +2021,8 @@ void GdbEngine::sendInsertBreakpoint(int index)
QByteArray cmd;
if (m_isMacGdb)
cmd = "-break-insert -l -1 -f ";
+ else if (m_gdbAdapter->isTrkAdapter())
+ cmd = "-break-insert -h -f ";
else if (m_gdbVersion >= 60800) // Probably some earlier version would work as well ...
cmd = "-break-insert -f ";
else
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index 5025d3a68b..1fbc27a3ee 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -384,8 +384,9 @@ QByteArray TrkGdbAdapter::trkStepRangeMessage(trk::byte option)
uint to = m_snapshot.lineToAddress;
uint pc = m_snapshot.registers[RegisterPC];
if (from <= pc && pc <= to) {
- qDebug() << "STEP IN " << hexxNumber(from) << hexxNumber(to)
- << "INSTEAD OF " << hexxNumber(pc);
+ to = qMax(to - 4, from);
+ debugMessage("STEP IN " + hexxNumber(from) + " " + hexxNumber(to)
+ + " INSTEAD OF " + hexxNumber(pc));
} else {
from = pc;
to = pc;
@@ -1852,7 +1853,7 @@ void TrkGdbAdapter::handleCreateProcess(const TrkResult &result)
m_engine->postCommand("symbol-file \"" + symbolFile + "\"");
}
m_engine->postCommand("set breakpoint always-inserted on");
- m_engine->postCommand("set breakpoint auto-hw off");
+ m_engine->postCommand("set breakpoint auto-hw on");
m_engine->postCommand("set trust-readonly-sections"); // No difference?
m_engine->postCommand("set displaced-stepping on"); // No difference?
m_engine->postCommand("set mem inaccessible-by-default");