Commit 6cf8628c authored by Oswald Buddenhagen's avatar Oswald Buddenhagen
Browse files

unbreak mac debugging again

setting the initial breakpoint at the entry point wreaks havoc, so set
it at main() instead. this will miss any breakpoints in global ctors and
(currently) makes it impossible to set an actual breakpoint at main.
parent 0e25fb6e
...@@ -1664,8 +1664,14 @@ bool GdbEngine::startDebugger() ...@@ -1664,8 +1664,14 @@ bool GdbEngine::startDebugger()
sendCommand("-exec-arguments " + q->m_processArgs.join(" ")); sendCommand("-exec-arguments " + q->m_processArgs.join(" "));
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
sendCommand("set auto-solib-add off"); sendCommand("set auto-solib-add off");
#endif
sendCommand("info target", GdbStart); sendCommand("info target", GdbStart);
#else
// On MacOS, breaking in at the entry point wreaks havoc.
sendCommand("tbreak main");
m_waitingForFirstBreakpointToBeHit = true;
qq->notifyInferiorRunningRequested();
sendCommand("-exec-run");
#endif
} }
// set all to "pending" // set all to "pending"
...@@ -1687,18 +1693,10 @@ void GdbEngine::continueInferior() ...@@ -1687,18 +1693,10 @@ void GdbEngine::continueInferior()
void GdbEngine::handleStart(const GdbResultRecord &response) void GdbEngine::handleStart(const GdbResultRecord &response)
{ {
if (response.resultClass == GdbResultDone) {
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
QString addr = response.data.findChild("section-info").findChild("entry-point").data(); Q_UNUSED(response);
if (!addr.isEmpty()) {
sendCommand("tbreak *" + addr);
m_waitingForFirstBreakpointToBeHit = true;
qq->notifyInferiorRunningRequested();
sendCommand("-exec-run");
} else {
debugMessage("CANNOT OBTAIN START ADDRESS");
}
#else #else
if (response.resultClass == GdbResultDone) {
// [some leading stdout here] // [some leading stdout here]
// stdout:&" Entry point: 0x80831f0 0x08048134 - 0x08048147 is .interp\n" // stdout:&" Entry point: 0x80831f0 0x08048134 - 0x08048147 is .interp\n"
// [some trailing stdout here] // [some trailing stdout here]
...@@ -1713,10 +1711,10 @@ void GdbEngine::handleStart(const GdbResultRecord &response) ...@@ -1713,10 +1711,10 @@ void GdbEngine::handleStart(const GdbResultRecord &response)
} else { } else {
debugMessage("PARSING START ADDRESS FAILED: " + msg); debugMessage("PARSING START ADDRESS FAILED: " + msg);
} }
#endif
} else if (response.resultClass == GdbResultError) { } else if (response.resultClass == GdbResultError) {
debugMessage("FETCHING START ADDRESS FAILED: " + response.toString()); debugMessage("FETCHING START ADDRESS FAILED: " + response.toString());
} }
#endif
} }
void GdbEngine::handleAttach() void GdbEngine::handleAttach()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment