void ScriptDebugServer::updateCallFrameAndPauseIfNeeded(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber) { ASSERT(m_currentCallFrame); if (!m_currentCallFrame) return; TextPosition0 textPosition(WTF::OneBasedNumber::fromOneBasedInt(lineNumber).convertToZeroBased(), WTF::ZeroBasedNumber::base()); m_currentCallFrame->update(debuggerCallFrame, sourceID, textPosition); pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject()); }
void ScriptDebugServer::updateCallFrameAndPauseIfNeeded(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber) { ASSERT(m_currentCallFrame); if (!m_currentCallFrame) return; TextPosition textPosition(OrdinalNumber::fromOneBasedInt(lineNumber), OrdinalNumber::first()); m_currentCallFrame->update(debuggerCallFrame, sourceID, textPosition); pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject()); }
void JavaScriptDebugServer::atStatement(const DebuggerCallFrame& debuggerCallFrame, int sourceID, int lineNumber) { if (m_paused) return; ASSERT(m_currentCallFrame); if (!m_currentCallFrame) return; m_currentCallFrame->update(debuggerCallFrame, sourceID, lineNumber); pauseIfNeeded(toPage(debuggerCallFrame.dynamicGlobalObject())); }
void JavaScriptDebugServer::didExecuteProgram(const DebuggerCallFrame& debuggerCallFrame, int sourceID, int lineNumber) { if (m_paused) return; ASSERT(m_currentCallFrame); if (!m_currentCallFrame) return; m_currentCallFrame->update(debuggerCallFrame, sourceID, lineNumber); pauseIfNeeded(toPage(debuggerCallFrame.dynamicGlobalObject())); // Treat stepping over the end of a program like stepping out. if (m_currentCallFrame == m_pauseOnCallFrame) m_pauseOnCallFrame = m_currentCallFrame->caller(); m_currentCallFrame = m_currentCallFrame->caller(); }
void DebuggerShell::exception(const DebuggerCallFrame& callFrame, intptr_t sourceID, int lineNumber, int column, bool hasHandler) { ExecState *execState = callFrame.dynamicGlobalObject()->globalExec(); WTF::CString exceptString = callFrame.exception().toString(execState)->getString(execState).ascii(); if (tracing_ || !hasHandler) { WTF::CString f = WTF::String::format("Exception (%shandled) at "WHEREAMI_FMT": %s", hasHandler ? "" : "un", WHEREAMI_DATA, exceptString.data()).ascii(); std::string& url = source_map_[sourceID].url; if (hasHandler) { dumpToTTY(f); } else { dumpToTTYPopup(f); pause_ASAP_ = true; } } maybeBlockExecution(callFrame); }
bool ScriptDebugServer::evaluateBreakpointAction(const ScriptBreakpointAction& breakpointAction) const { DebuggerCallFrame* debuggerCallFrame = currentDebuggerCallFrame(); switch (breakpointAction.type) { case ScriptBreakpointActionTypeLog: { DOMWindow& window = asJSDOMWindow(debuggerCallFrame->dynamicGlobalObject())->impl(); if (PageConsole* console = window.pageConsole()) console->addMessage(JSMessageSource, LogMessageLevel, breakpointAction.data); break; } case ScriptBreakpointActionTypeEvaluate: { JSValue exception; debuggerCallFrame->evaluate(breakpointAction.data, exception); if (exception) reportException(debuggerCallFrame->exec(), exception); break; } case ScriptBreakpointActionTypeSound: systemBeep(); break; } return true; }
void ScriptDebugServer::createCallFrameAndPauseIfNeeded(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber) { TextPosition textPosition(OrdinalNumber::fromOneBasedInt(lineNumber), OrdinalNumber::first()); m_currentCallFrame = JavaScriptCallFrame::create(debuggerCallFrame, m_currentCallFrame, sourceID, textPosition); pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject()); }
void ScriptDebugServer::createCallFrameAndPauseIfNeeded(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber) { TextPosition0 textPosition(WTF::OneBasedNumber::fromOneBasedInt(lineNumber).convertToZeroBased(), WTF::ZeroBasedNumber::base()); m_currentCallFrame = JavaScriptCallFrame::create(debuggerCallFrame, m_currentCallFrame, sourceID, textPosition); pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject()); }