diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 450016f66d2a84edd25f9195f27f5e82c839cfa8..0635daf573d94875f21a1043ad0b406333f7fa5b 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1466,8 +1466,23 @@ class Dumper(DumperBase): self.thread.StepOverUntil(file, line) self.reportData() - def executeJumpToLine(self): - self.report('error={msg="Not implemented"},state="stopped"') + def executeJumpToLine(self, args): + frame = self.currentFrame() + self.report('state="stopped"') + if not frame: + self.report('error={msg="No frame"}') + return + bp = self.target.BreakpointCreateByLocation( + str(args["file"]), int(args["line"])) + isWatch = isinstance(bp, lldb.SBWatchpoint) + if bp.GetNumLocations() == 0: + self.report('error={msg="No location implemented"}') + self.target.BreakpointDelete(bp.GetID()) + return + loc = bp.GetLocationAtIndex(0) + self.target.BreakpointDelete(bp.GetID()) + frame.SetPC(loc.GetLoadAddress()) + self.reportData() def breakList(self): result = lldb.SBCommandReturnObject() diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 6b7884681e8f55c4a9d242d4c4052bc11fd178c8..e8028fd63bc03ddb2e45cd6359a1776270a813ae 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -370,7 +370,7 @@ void LldbEngine::executeJumpToLine(const ContextData &data) resetLocation(); notifyInferiorRunRequested(); runCommand(Command("executeJumpToLine") - .arg("file", data.fileName).arg("line", data.address)); + .arg("file", data.fileName).arg("line", data.lineNumber)); } void LldbEngine::activateFrame(int frameIndex)