|
|
|
@ -288,6 +288,9 @@ std::vector<Debug::Frame> Debug::get_backtrace() { |
|
|
|
for(uint32_t c_f=0;c_f<thread.GetNumFrames();c_f++) { |
|
|
|
for(uint32_t c_f=0;c_f<thread.GetNumFrames();c_f++) { |
|
|
|
Frame backtrace_frame; |
|
|
|
Frame backtrace_frame; |
|
|
|
auto frame=thread.GetFrameAtIndex(c_f); |
|
|
|
auto frame=thread.GetFrameAtIndex(c_f); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backtrace_frame.index=c_f; |
|
|
|
|
|
|
|
|
|
|
|
auto function_name=frame.GetFunctionName(); |
|
|
|
auto function_name=frame.GetFunctionName(); |
|
|
|
if(function_name!=NULL) |
|
|
|
if(function_name!=NULL) |
|
|
|
backtrace_frame.function_name=function_name; |
|
|
|
backtrace_frame.function_name=function_name; |
|
|
|
@ -315,6 +318,15 @@ std::vector<Debug::Frame> Debug::get_backtrace() { |
|
|
|
return backtrace; |
|
|
|
return backtrace; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Debug::select_frame(uint32_t index) { |
|
|
|
|
|
|
|
event_mutex.lock(); |
|
|
|
|
|
|
|
if(state==lldb::StateType::eStateStopped) { |
|
|
|
|
|
|
|
auto thread=process->GetSelectedThread(); |
|
|
|
|
|
|
|
thread.SetSelectedFrame(index); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
event_mutex.unlock(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Debug::delete_debug() { |
|
|
|
void Debug::delete_debug() { |
|
|
|
kill(); |
|
|
|
kill(); |
|
|
|
if(debug_thread.joinable()) |
|
|
|
if(debug_thread.joinable()) |
|
|
|
|