void BreakConditionConfigWindow::_UpdateExceptionState() { // check if the exception breakpoints are already installed for (ImageList::ConstIterator it = fTeam->Images().GetIterator(); it.HasNext();) { Image* image = it.Next(); ImageDebugInfo* info = image->GetImageDebugInfo(); target_addr_t address; if (_FindExceptionFunction(info, address) != B_OK) continue; if (fTeam->BreakpointAtAddress(address) != NULL) { fExceptionThrown->SetValue(B_CONTROL_ON); break; } } }
void BreakConditionConfigWindow::_UpdateThrownBreakpoints(bool enable) { AutoLocker< ::Team> teamLocker(fTeam); for (ImageList::ConstIterator it = fTeam->Images().GetIterator(); it.HasNext();) { Image* image = it.Next(); ImageDebugInfo* info = image->GetImageDebugInfo(); target_addr_t address; if (_FindExceptionFunction(info, address) != B_OK) continue; if (enable) fListener->SetBreakpointRequested(address, true, true); else fListener->ClearBreakpointRequested(address); } }