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/9770d167bc6c39ee731fa10ff082267f250c53ab/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 18 C++ >>>> >>>> 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 519 C++ >>>> v8.dll!v8_inspector::V8Debugger::handleV8DebugEvent(const >>>> v8::DebugInterface::EventDetails & eventDetails) Line 620 C++ >>>> v8.dll!v8_inspector::V8Debugger::v8DebugEventCallback(const >>>> v8::DebugInterface::EventDetails & eventDetails) Line 540 C++ >>>> 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 1903 C++ >>>> v8.dll!v8::internal::Debug::ProcessDebugEvent(v8::DebugEvent event, >>>> v8::internal::Handle<v8::internal::JSObject> event_data, bool >>>> auto_continue) Line 1880 C++ >>>> >>>> v8.dll!v8::internal::Debug::OnDebugBreak(v8::internal::Handle<v8::internal::Object> >>>> >>>> break_points_hit, bool auto_continue) Line 1818 C++ >>>> v8.dll!v8::internal::Debug::Break(v8::internal::JavaScriptFrame * >>>> frame) Line 573 C++ >>>> >>>> v8.dll!v8::internal::__RT_impl_Runtime_DebugBreak(v8::internal::Arguments >>>> args, v8::internal::Isolate * isolate) Line 35 C++ >>>> v8.dll!v8::internal::Runtime_DebugBreak(int args_length, >>>> v8::internal::Object * * args_object, v8::internal::Isolate * isolate) >>>> Line 25 + 0xde bytes C++ >>>> >>>> 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/ >>>>>> v8inspector]. 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"," >>>>>> threshold":100},{"name":"blockedParser","threshold":-1} >>>>>> ,{"name":"handler","threshold":150},{"name":" >>>>>> recurringHandler","threshold":50}]}} >>>>>> >>>>>> {"id":3,"method":"Network.enable","params":{" >>>>>> maxTotalBufferSize":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":{" >>>>>> autoAttach":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":"FF07566204EF7A37E97781F777DD92 >>>>>> 82456E48B3","isLiveEdit":false,"sourceMapURL":""," >>>>>> hasSourceURL":false}} >>>>>> >>>>>> {"id":22,"method":"Debugger.setBreakpointByUrl","params":{ >>>>>> "lineNumber":13,"url":"my_Screen1","columnNumber":39,"condition":""}} >>>>>> >>>>>> {"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.setPauseOnExceptions","params" >>>>>>> :{"state":"none"}} >>>>>>> message {"id":4,"method":"Debugger.setAsyncCallStackDepth"," >>>>>>> params":{"maxDepth":0}} >>>>>>> message {"id":5,"method":"Profiler.enable"} >>>>>>> message {"id":6,"method":"Profiler.setSamplingInterval","params": >>>>>>> {"interval":100}} >>>>>>> message {"id":7,"method":"Debugger.setBlackboxPatterns","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/ >>>>> v8inspector]. 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"," >>>>> threshold":100},{"name":"blockedParser","threshold":-1} >>>>> ,{"name":"handler","threshold":150},{"name":" >>>>> recurringHandler","threshold":50}]}} >>>>> >>>>> {"id":3,"method":"Network.enable","params":{" >>>>> maxTotalBufferSize":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":{"autoAttach":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":"FF07566204EF7A37E97781F777DD92 >>>>> 82456E48B3","isLiveEdit":false,"sourceMapURL":""," >>>>> hasSourceURL":false}} >>>>> >>>>> {"id":22,"method":"Debugger.setBreakpointByUrl","params":{ >>>>> "lineNumber":13,"url":"my_Screen1","columnNumber":39,"condition":""}} >>>>> >>>>> {"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.setPauseOnExceptions","params" >>>>>> :{"state":"none"}} >>>>>> message {"id":4,"method":"Debugger.setAsyncCallStackDepth"," >>>>>> params":{"maxDepth":0}} >>>>>> message {"id":5,"method":"Profiler.enable"} >>>>>> message {"id":6,"method":"Profiler.setSamplingInterval","params": >>>>>> {"interval":100}} >>>>>> message {"id":7,"method":"Debugger.setBlackboxPatterns","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 >>>>>> >>>>> -- -- 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.
