It does not work if I do not call PumpMessageLoop in the pause loop. This is needed to push message from frontend to the backend. If I comment this out, inspector will pause when hit on halt but does not respond to any other front end messages.
On Wednesday, June 7, 2017 at 1:21:11 PM UTC+5:30, Zac Hansen wrote: > > I'm not sure what the PumpMessageLoop call does, but have you tried it > without? > > That sounds like it might start execution of code even though it is > supposed to be paused. > > On Tuesday, June 6, 2017 at 11:11:20 PM UTC-7, Zac Hansen wrote: >> >> Hrmm, not sure what happened, I search now and I see this: >> >> >> https://github.com/hsharsha/v8inspector/blob/a8219beb1b69ae6cbec1c79274291a14910cc248/inspector_agent.cc#L308 >> >> On Tuesday, June 6, 2017 at 11:08:52 PM UTC-7, Zac Hansen wrote: >>> >>> I searched your code for runMessageLoopOnPause and didn't find an >>> override in your subclass. I'm no expert, but the code that I have that >>> works is: >>> >>> https://github.com/xaxxon/v8toolkit/blob/9770d167bc6c39ee731fa10ff08226 >>> 7f250c53ab/include/debugger.h#L286 >>> >>> >>> >>> virtual void runMessageLoopOnPause(int contextGroupId) override { >>> this->paused = true; >>> while (this->paused) { >>> this->channel->run_one(); >>> } >>> std::cerr << fmt::format("exiting runMessageLoopOnPause") << std::endl; >>> } Where run_one is what gives my websocket server a chance to deal with >>> incoming chrome debug protocol messages. >>> >>> On Tuesday, June 6, 2017 at 10:46:29 PM UTC-7, Harsha HS wrote: >>>> >>>> Having trouble when those are hit. I am able to set breakpoints >>>> I am processing messages in the pause loop. I can watch and respond to >>>> getProperty methods when paused. >>>> But only way to pause in my code is by hitting halt on the dev-tools. >>>> Any other action like step, will just continue the JS execution and it >>>> wont hit breakpoints. Only way to pause again is to hit halt. >>>> >>>> Code is at https://github.com/hsharsha/v8inspector >>>> It depends on libuv to interact with browser. >>>> >>>> Thanks, >>>> -Harsha >>>> >>>> On Wednesday, June 7, 2017 at 11:09:57 AM UTC+5:30, Zac Hansen wrote: >>>>> >>>>> Are you having trouble setting those or when those are hit? >>>>> >>>>> When they are hit, your code will go into the same callback as when >>>>> you manually pause, from what I've seen. Are you processing messages >>>>> while >>>>> in the pause callback? >>>>> >>>>> >>>>> >>>>> On Tuesday, June 6, 2017 at 10:27:24 AM UTC-7, Harsha HS wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> runMessageLoopOnPause and quitMessageLoopOnPause seems to be working >>>>>> correctly. When the debugger is paused using the halt icon on chrome-dev >>>>>> tools, runMessageLoopOnPause is called and it is just pumping messages >>>>>> to >>>>>> platform and when continued quitMessageLoopOnPause is called and the >>>>>> java >>>>>> script execution continues. >>>>>> >>>>>> I am facing issue with single step, break, step into or step over >>>>>> functionality. Debugger is not paused when these methods are hit. >>>>>> It looks like a synchronization issue between inspector thread and >>>>>> java script execution thread. >>>>>> How to synchronize between JS execution and inspector protocol? >>>>>> >>>>>> Thanks, >>>>>> -Harsha >>>>>> >>>>>> On Monday, May 29, 2017 at 10:42:33 AM UTC+5:30, Anoop R. S. wrote: >>>>>>> >>>>>>> Hi Harsha, >>>>>>> Is it setting the breakpoints by passing "method":"Debugger. >>>>>>> setBreakpointByUrl" ? >>>>>>> Seems like it is having problems on pausing: pausing at a >>>>>>> breakpoint, pausing after singlestep operation. >>>>>>> runMessageLoopOnPause function is called when debugger pauses (at a >>>>>>> breakpoint, after step over etc) >>>>>>> >>>>>>> https://groups.google.com/forum/#!topic/v8-users/qmr92Cgagg4 >>>>>>> >>>>>>> Here is my call stack when pause happens after a step over. You can >>>>>>> use it for debugging. >>>>>>> >>>>>>> >ChromeDbgServer.exe!V8SFWInspector::runMessageLoopOnPause(int >>>>>>> contextGroupId) Line 18C++ >>>>>>> >>>>>>> v8.dll!v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context> >>>>>>> >>>>>>> pausedContext, v8::Local<v8::Object> executionState, >>>>>>> v8::Local<v8::Value> >>>>>>> exception, v8::Local<v8::Array> hitBreakpointNumbers, bool >>>>>>> isPromiseRejection, bool isUncaught) Line 519C++ >>>>>>> v8.dll!v8_inspector::V8Debugger::handleV8DebugEvent(const >>>>>>> v8::DebugInterface::EventDetails & eventDetails) Line 620C++ >>>>>>> v8.dll!v8_inspector::V8Debugger::v8DebugEventCallback(const >>>>>>> v8::DebugInterface::EventDetails & eventDetails) Line 540C++ >>>>>>> v8.dll!v8::internal::Debug::CallEventCallback(v8::DebugEvent >>>>>>> event, v8::internal::Handle<v8::internal::Object> exec_state, >>>>>>> v8::internal::Handle<v8::internal::Object> event_data, >>>>>>> v8::Debug::ClientData * client_data) Line 1903C++ >>>>>>> v8.dll!v8::internal::Debug::ProcessDebugEvent(v8::DebugEvent >>>>>>> event, v8::internal::Handle<v8::internal::JSObject> event_data, >>>>>>> bool auto_continue) Line 1880C++ >>>>>>> >>>>>>> v8.dll!v8::internal::Debug::OnDebugBreak(v8::internal::Handle<v8::internal::Object> >>>>>>> >>>>>>> break_points_hit, bool auto_continue) Line 1818C++ >>>>>>> v8.dll!v8::internal::Debug::Break(v8::internal::JavaScriptFrame * >>>>>>> frame) Line 573C++ >>>>>>> >>>>>>> v8.dll!v8::internal::__RT_impl_Runtime_DebugBreak(v8::internal::Arguments >>>>>>> >>>>>>> args, v8::internal::Isolate * isolate) Line 35C++ >>>>>>> v8.dll!v8::internal::Runtime_DebugBreak(int args_length, >>>>>>> v8::internal::Object * * args_object, v8::internal::Isolate * isolate) >>>>>>> Line 25 + 0xde bytesC++ >>>>>>> >>>>>>> Hope I am not too late for the reply. >>>>>>> >>>>>>> regards, >>>>>>> Anoop R. S. >>>>>>> >>>>>>> --From Mail >>>>>>> >>>>>>>> Hi Anoop, >>>>>>>> >>>>>>>> Thanks for your reply and very sorry for the delay in my reply as >>>>>>>> I was on vacation and did not get a chance to work on the inspector >>>>>>>> code. >>>>>>>> >>>>>>>> I fixed issue which was a silly mistake from my end as I was >>>>>>>> allocating the agent variable on stack which go cleaned up once the >>>>>>>> function returned. >>>>>>>> >>>>>>>> Now I could establish connection with the chrome-dev tools client >>>>>>>> and communicate with the debug server. >>>>>>>> I am facing an issue here. >>>>>>>> i) It is not breaking on the first statement, even though I have >>>>>>>> wait implemented >>>>>>>> ii) I can now stop the execution using halt from the chrome-dev >>>>>>>> tools. But If I do single-step or step out, the execution just >>>>>>>> continues >>>>>>>> (work as continue instead of single step) and again I have to press >>>>>>>> halt on >>>>>>>> chrome-dev tools to break the execution. >>>>>>>> >>>>>>>> If you can take a look at github.com/hsharsha/v8inspector, would >>>>>>>> appreciate greatly. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> -Harsha >>>>>>>> >>>>>>>> On Thu, May 18, 2017 at 1:35 PM, Anoop R. S. wrote: >>>>>>>> >>>>>>>>> Hi Harsha, >>>>>>>>> We also developed a debugging framework for JS using V8 inspector. >>>>>>>>> While doing that, in between we were also getting this error, but >>>>>>>>> resolved >>>>>>>>> it by debugging our code. >>>>>>>>> I can send you the websocket messages that we are getting. Maybe >>>>>>>>> that would help in some way. >>>>>>>>> I haven't run your code provided at [https://github.com/hsharsha/v >>>>>>>>> 8inspector]. Maybe if you need further help, I can check it. >>>>>>>>> >>>>>>>>> >>>>>>>>> {"id":1,"method":"Log.enable"} >>>>>>>>> >>>>>>>>> {"id":2,"method":"Log.startViolationsReport","params":{" >>>>>>>>> config":[{"name":"longTask","threshold":200},{"name":" >>>>>>>>> longLayout","threshold":30},{"name":"blockedEvent","threshol >>>>>>>>> d":100},{"name":"blockedParser","threshold":-1},{"name":" >>>>>>>>> handler","threshold":150},{"name":"recurringHandler","threshold": >>>>>>>>> 50}]}} >>>>>>>>> >>>>>>>>> {"id":3,"method":"Network.enable","params":{"maxTotalBufferS >>>>>>>>> ize":10000000,"maxResourceBufferSize":5000000}} >>>>>>>>> >>>>>>>>> {"id":4,"method":"Page.enable"} >>>>>>>>> >>>>>>>>> {"id":5,"method":"Page.getResourceTree"} >>>>>>>>> >>>>>>>>> {"id":6,"method":"Runtime.enable"} >>>>>>>>> >>>>>>>>> {"id":7,"method":"Debugger.enable"} >>>>>>>>> >>>>>>>>> {"id":8,"method":"Debugger.setPauseOnExceptions","params":{" >>>>>>>>> state":"none"}} >>>>>>>>> >>>>>>>>> {"id":9,"method":"Debugger.setAsyncCallStackDepth","params": >>>>>>>>> {"maxDepth":0}} >>>>>>>>> >>>>>>>>> {"id":10,"method":"DOM.enable"} >>>>>>>>> >>>>>>>>> {"id":11,"method":"CSS.enable"} >>>>>>>>> >>>>>>>>> {"id":12,"method":"Target.setAutoAttach","params":{"autoAtta >>>>>>>>> ch":true,"waitForDebuggerOnStart":true}} >>>>>>>>> >>>>>>>>> {"id":13,"method":"Profiler.enable"} >>>>>>>>> >>>>>>>>> {"id":14,"method":"Profiler.setSamplingInterval","params":{" >>>>>>>>> interval":100}} >>>>>>>>> >>>>>>>>> {"id":15,"method":"ServiceWorker.enable"} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Log.enable' wasn't >>>>>>>>> found"},"id":1} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Log.startViolationsReport' >>>>>>>>> wasn't found"},"id":2} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Network.enable' wasn't >>>>>>>>> found"},"id":3} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Page.enable' wasn't >>>>>>>>> found"},"id":4} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Page.getResourceTree' wasn't >>>>>>>>> found"},"id":5} >>>>>>>>> >>>>>>>>> {"method":"Runtime.executionContextCreated","params":{" >>>>>>>>> context":{"id":1,"origin":"","name":""}}} >>>>>>>>> >>>>>>>>> {"id":6,"result":{}} >>>>>>>>> >>>>>>>>> {"method":"Debugger.scriptParsed","params":{"scriptId":"22", >>>>>>>>> "url":"my_Screen1","startLine":0,"startColumn":0,"endLine":19," >>>>>>>>> endColumn":0,"executionContextId":1,"hash":"FF07566204EF >>>>>>>>> 7A37E97781F777DD9282456E48B3","isLiveEdit":false," >>>>>>>>> sourceMapURL":"","hasSourceURL":false}} >>>>>>>>> >>>>>>>>> {"id":22,"method":"Debugger.setBreakpointByUrl","params":{" >>>>>>>>> lineNumber":13,"url":"my_Screen1","columnNumber":39,"conditi >>>>>>>>> on":""}} >>>>>>>>> >>>>>>>>> {"id":7,"result":{}} >>>>>>>>> >>>>>>>>> {"id":8,"result":{}} >>>>>>>>> >>>>>>>>> {"id":9,"result":{}} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'DOM.enable' wasn't >>>>>>>>> found"},"id":10} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'CSS.enable' wasn't >>>>>>>>> found"},"id":11} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Target.setAutoAttach' wasn't >>>>>>>>> found"},"id":12} >>>>>>>>> >>>>>>>>> {"id":13,"result":{}} >>>>>>>>> >>>>>>>>> {"id":14,"result":{}} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'ServiceWorker.enable' wasn't >>>>>>>>> found"},"id":15} >>>>>>>>> >>>>>>>>> {"id":16,"result":{}} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Page.setAutoAttachToCreatedPages' >>>>>>>>> wasn't found"},"id":17} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Emulation.setScriptExecutionDisabled' >>>>>>>>> >>>>>>>>> wasn't found"},"id":18} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Rendering.setShowViewportSizeOnResize' >>>>>>>>> >>>>>>>>> wasn't found"},"id":19} >>>>>>>>> >>>>>>>>> {"error":{"code":-32601,"message":"'Inspector.enable' wasn't >>>>>>>>> found"},"id":20} >>>>>>>>> >>>>>>>>> {"id":21,"result":{}} >>>>>>>>> >>>>>>>>> {"id":22,"result":{"breakpointId":"my_Screen1:13:39"," >>>>>>>>> locations":[{"scriptId":"22","lineNumber":13,"columnNumber":39}]}} >>>>>>>>> >>>>>>>>> Please let me know if this is of any help for you. >>>>>>>>> >>>>>>>>> regards, >>>>>>>>> Anoop R. S. >>>>>>>>> >>>>>>>>> On Monday, 8 May 2017 20:01:43 UTC+5:30, Harsha HS wrote: >>>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> I am trying to use chrome protocol with chrom-devtools in front >>>>>>>>>> end. >>>>>>>>>> I am not receiving any message from frontend after id:8 >>>>>>>>>> >>>>>>>>>> message {"id":1,"method":"Runtime.enable"} >>>>>>>>>> message {"id":2,"method":"Debugger.enable"} >>>>>>>>>> message {"id":3,"method":"Debugger.set >>>>>>>>>> PauseOnExceptions","params":{"state":"none"}} >>>>>>>>>> message {"id":4,"method":"Debugger.setAsyncCallStackDepth"," >>>>>>>>>> params":{"maxDepth":0}} >>>>>>>>>> message {"id":5,"method":"Profiler.enable"} >>>>>>>>>> message {"id":6,"method":"Profiler.set >>>>>>>>>> SamplingInterval","params":{"interval":100}} >>>>>>>>>> message {"id":7,"method":"Debugger.set >>>>>>>>>> BlackboxPatterns","params":{"patterns":[]}} >>>>>>>>>> message {"id":8,"method":"Runtime.runIfWaitingForDebugger"} >>>>>>>>>> >>>>>>>>>> For each of these messages, I am replying to frontend with >>>>>>>>>> {id:xx, result:{}}. >>>>>>>>>> >>>>>>>>>> Code is at https://github.com/hsharsha/v8inspector >>>>>>>>>> >>>>>>>>>> -Harsha >>>>>>>>>> >>>>>>>>> … >>>>>>>> >>>>>>> >>>>>>> On Thursday, 18 May 2017 13:35:15 UTC+5:30, Anoop R. S. wrote: >>>>>>>> >>>>>>>> Hi Harsha, >>>>>>>> We also developed a debugging framework for JS using V8 inspector. >>>>>>>> While doing that, in between we were also getting this error, but >>>>>>>> resolved >>>>>>>> it by debugging our code. >>>>>>>> I can send you the websocket messages that we are getting. Maybe >>>>>>>> that would help in some way. >>>>>>>> I haven't run your code provided at [https://github.com/hsharsha/v >>>>>>>> 8inspector]. Maybe if you need further help, I can check it. >>>>>>>> >>>>>>>> >>>>>>>> {"id":1,"method":"Log.enable"} >>>>>>>> >>>>>>>> {"id":2,"method":"Log.startViolationsReport","params":{" >>>>>>>> config":[{"name":"longTask","threshold":200},{"name":" >>>>>>>> longLayout","threshold":30},{"name":"blockedEvent","threshol >>>>>>>> d":100},{"name":"blockedParser","threshold":-1},{"name":" >>>>>>>> handler","threshold":150},{"name":"recurringHandler","threshold": >>>>>>>> 50}]}} >>>>>>>> >>>>>>>> {"id":3,"method":"Network.enable","params":{"maxTotalBufferS >>>>>>>> ize":10000000,"maxResourceBufferSize":5000000}} >>>>>>>> >>>>>>>> {"id":4,"method":"Page.enable"} >>>>>>>> >>>>>>>> {"id":5,"method":"Page.getResourceTree"} >>>>>>>> >>>>>>>> {"id":6,"method":"Runtime.enable"} >>>>>>>> >>>>>>>> {"id":7,"method":"Debugger.enable"} >>>>>>>> >>>>>>>> {"id":8,"method":"Debugger.setPauseOnExceptions","params":{" >>>>>>>> state":"none"}} >>>>>>>> >>>>>>>> {"id":9,"method":"Debugger.setAsyncCallStackDepth","params": >>>>>>>> {"maxDepth":0}} >>>>>>>> >>>>>>>> {"id":10,"method":"DOM.enable"} >>>>>>>> >>>>>>>> {"id":11,"method":"CSS.enable"} >>>>>>>> >>>>>>>> {"id":12,"method":"Target.setAutoAttach","params":{"autoAtta >>>>>>>> ch":true,"waitForDebuggerOnStart":true}} >>>>>>>> >>>>>>>> {"id":13,"method":"Profiler.enable"} >>>>>>>> >>>>>>>> {"id":14,"method":"Profiler.setSamplingInterval","params":{" >>>>>>>> interval":100}} >>>>>>>> >>>>>>>> {"id":15,"method":"ServiceWorker.enable"} >>>>>>>> >>>>>>>> {"error":{"code":-32601,"message":"'Log.enable' wasn't >>>>>>>> found"},"id":1} >>>>>>>> >>>>>>>> {"error":{"code":-32601,"message":"'Log.startViolationsReport' >>>>>>>> wasn't found"},"id":2} >>>>>>>> >>>>>>>> {"error":{"code":-32601,"message":"'Network.enable' wasn't >>>>>>>> found"},"id":3} >>>>>>>> >>>>>>>> {"error":{"code":-32601,"message":"'Page.enable' wasn't >>>>>>>> found"},"id":4} >>>>>>>> >>>>>>>> {"error":{"code":-32601,"message":"'Page.getResourceTree' wasn't >>>>>>>> found"},"id":5} >>>>>>>> >>>>>>>> {"method":"Runtime.executionContextCreated","params":{" >>>>>>>> context":{"id":1,"origin":"","name":""}}} >>>>>>>> >>>>>>>> {"id":6,"result":{}} >>>>>>>> >>>>>>>> {"method":"D >>>>>>>> >>>>>>> -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
