diff --git a/src/debug.cc b/src/debug.cc index 954bf27..2e72c52 100644 --- a/src/debug.cc +++ b/src/debug.cc @@ -361,11 +361,12 @@ std::vector Debug::get_variables() { return variables; } -void Debug::select_frame(uint32_t index) { +void Debug::select_frame(uint32_t frame_index, uint32_t thread_index_id) { event_mutex.lock(); if(state==lldb::StateType::eStateStopped) { - auto thread=process->GetSelectedThread(); - thread.SetSelectedFrame(index); + if(thread_index_id!=0) + process->SetSelectedThreadByIndexID(thread_index_id); + process->GetSelectedThread().SetSelectedFrame(frame_index);; } event_mutex.unlock(); } diff --git a/src/debug.h b/src/debug.h index 9900f9a..07fd4d2 100644 --- a/src/debug.h +++ b/src/debug.h @@ -52,7 +52,7 @@ public: std::pair run_command(const std::string &command); std::vector get_backtrace(); std::vector get_variables(); - void select_frame(uint32_t index); + void select_frame(uint32_t frame_index, uint32_t thread_index_id=0); void delete_debug(); //can't use delete as function name diff --git a/src/window.cc b/src/window.cc index 2fd7f73..a167113 100644 --- a/src/window.cc +++ b/src/window.cc @@ -960,7 +960,7 @@ void Window::set_menu_actions() { if(notebook.get_current_page()!=-1) { auto view=notebook.get_current_view(); - Debug::get().select_frame(variable.frame_index); + Debug::get().select_frame(variable.frame_index, variable.thread_index_id); view->get_buffer()->place_cursor(view->get_buffer()->get_iter_at_line_index(variable.line_nr-1, variable.line_index-1));