void ThreadPlanRunToAddress::SetInitialBreakpoints() { size_t num_addresses = m_addresses.size(); m_break_ids.resize(num_addresses); for (size_t i = 0; i < num_addresses; i++) { Breakpoint *breakpoint; breakpoint = m_thread.CalculateTarget() ->CreateBreakpoint(m_addresses[i], true, false) .get(); if (breakpoint != nullptr) { m_break_ids[i] = breakpoint->GetID(); breakpoint->SetThreadID(m_thread.GetID()); breakpoint->SetBreakpointKind("run-to-address"); } } }
void ThreadPlanRunToAddress::SetInitialBreakpoints() { size_t num_addresses = m_addresses.size(); m_break_ids.resize(num_addresses); for (size_t i = 0; i < num_addresses; i++) { Breakpoint *breakpoint; breakpoint = m_thread.CalculateTarget() ->CreateBreakpoint(m_addresses[i], true, false) .get(); if (breakpoint != nullptr) { if (breakpoint->IsHardware() && !breakpoint->HasResolvedLocations()) m_could_not_resolve_hw_bp = true; m_break_ids[i] = breakpoint->GetID(); breakpoint->SetThreadID(m_thread.GetID()); breakpoint->SetBreakpointKind("run-to-address"); } } }
//------------------------------------------------------------------ // Setup the JIT Breakpoint //------------------------------------------------------------------ void JITLoaderGDB::SetJITBreakpoint(lldb_private::ModuleList &module_list) { if (!GetGlobalPluginProperties()->GetEnableJITBreakpoint()) return; if ( DidSetJITBreakpoint() ) return; Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_JIT_LOADER)); if (log) log->Printf("JITLoaderGDB::%s looking for JIT register hook", __FUNCTION__); addr_t jit_addr = GetSymbolAddress(module_list, ConstString("__jit_debug_register_code"), eSymbolTypeAny); if (jit_addr == LLDB_INVALID_ADDRESS) return; m_jit_descriptor_addr = GetSymbolAddress(module_list, ConstString("__jit_debug_descriptor"), eSymbolTypeData); if (m_jit_descriptor_addr == LLDB_INVALID_ADDRESS) { if (log) log->Printf( "JITLoaderGDB::%s failed to find JIT descriptor address", __FUNCTION__); return; } if (log) log->Printf("JITLoaderGDB::%s setting JIT breakpoint", __FUNCTION__); Breakpoint *bp = m_process->GetTarget().CreateBreakpoint(jit_addr, true, false).get(); bp->SetCallback(JITDebugBreakpointHit, this, true); bp->SetBreakpointKind("jit-debug-register"); m_jit_break_id = bp->GetID(); ReadJITDescriptor(true); }