| 1151 | |
| 1152 | |
| 1153 | bool LldbAdapter::StepOver() |
| 1154 | { |
| 1155 | if (m_process.GetState() != lldb::eStateStopped) |
| 1156 | { |
| 1157 | DebuggerEvent event; |
| 1158 | event.type = ErrorEventType; |
| 1159 | event.data.errorData.shortError = "Step over failed"; |
| 1160 | event.data.errorData.error = fmt::format("LLDB: step over failed, process state is not stopped"); |
| 1161 | PostDebuggerEvent(event); |
| 1162 | return false; |
| 1163 | } |
| 1164 | |
| 1165 | #ifndef WIN32 |
| 1166 | SBThread thread = m_process.GetSelectedThread(); |
| 1167 | if (!thread.IsValid()) |
| 1168 | { |
| 1169 | DebuggerEvent event; |
| 1170 | event.type = ErrorEventType; |
| 1171 | event.data.errorData.shortError = "Step over failed"; |
| 1172 | event.data.errorData.error = fmt::format("LLDB: step over failed, invalid thread"); |
| 1173 | PostDebuggerEvent(event); |
| 1174 | return false; |
| 1175 | } |
| 1176 | |
| 1177 | SBError error; |
| 1178 | thread.StepInstruction(true, error); |
| 1179 | if (!error.Success()) |
| 1180 | { |
| 1181 | DebuggerEvent event; |
| 1182 | event.type = ErrorEventType; |
| 1183 | event.data.errorData.shortError = "Step over failed"; |
| 1184 | event.data.errorData.error = |
| 1185 | fmt::format("LLDB: step over failed {}", error.GetCString() ? error.GetCString() : ""); |
| 1186 | PostDebuggerEvent(event); |
| 1187 | return false; |
| 1188 | } |
| 1189 | #else |
| 1190 | InvokeBackendCommand("ni"); |
| 1191 | #endif |
| 1192 | return true; |
| 1193 | } |
| 1194 | |
| 1195 | |
| 1196 | bool LldbAdapter::StepReturn() |