| 1108 | |
| 1109 | |
| 1110 | bool LldbAdapter::StepInto() |
| 1111 | { |
| 1112 | if (m_process.GetState() != lldb::eStateStopped) |
| 1113 | { |
| 1114 | DebuggerEvent event; |
| 1115 | event.type = ErrorEventType; |
| 1116 | event.data.errorData.shortError = "step into failed"; |
| 1117 | event.data.errorData.error = fmt::format("LLDB: step into failed, process state is not stopped"); |
| 1118 | PostDebuggerEvent(event); |
| 1119 | return false; |
| 1120 | } |
| 1121 | |
| 1122 | #ifndef WIN32 |
| 1123 | SBThread thread = m_process.GetSelectedThread(); |
| 1124 | if (!thread.IsValid()) |
| 1125 | { |
| 1126 | DebuggerEvent event; |
| 1127 | event.type = ErrorEventType; |
| 1128 | event.data.errorData.shortError = "Step into failed"; |
| 1129 | event.data.errorData.error = fmt::format("LLDB: step into failed, invalid thread"); |
| 1130 | PostDebuggerEvent(event); |
| 1131 | return false; |
| 1132 | } |
| 1133 | |
| 1134 | SBError error; |
| 1135 | thread.StepInstruction(false, error); |
| 1136 | if (!error.Success()) |
| 1137 | { |
| 1138 | DebuggerEvent event; |
| 1139 | event.type = ErrorEventType; |
| 1140 | event.data.errorData.shortError = "Step into failed"; |
| 1141 | event.data.errorData.error = |
| 1142 | fmt::format("LLDB: step into failed {}", error.GetCString() ? error.GetCString() : ""); |
| 1143 | PostDebuggerEvent(event); |
| 1144 | return false; |
| 1145 | } |
| 1146 | #else |
| 1147 | InvokeBackendCommand("si"); |
| 1148 | #endif |
| 1149 | return true; |
| 1150 | } |
| 1151 | |
| 1152 | |
| 1153 | bool LldbAdapter::StepOver() |