Hi Ben, > On 17-Aug-2016, at 5:43 PM, Ben Noordhuis <[email protected]> wrote: > > On Tue, Aug 16, 2016 at 6:22 PM, Abhishek Singh > <[email protected]> wrote: >> Hi Ben, >> >> In sample example I shared, I was trying to simulate a behaviour similar to >> what my application(based on top of V8) saw - sleep calls were added to >> somehow make this example artificially simulate the app. I’ve modified the >> gist, hoping now it doesn’t create confusion. >> >> Here is sample output from it, I’ll explain below what they mean(annotating >> by line no to make it easy to explain, otherwise would need ascii drawing >> :)): >> >> line# Output Message >> ==================================== >> 1 debugger.ccTestBreakPoints179 >> 2 debugger.ccTestBreakPoints181 >> 3 debugger.ccSendDebugUserRequest146 >> 4 2016-08-16.21:33:16 DebugSetBreakpointHandler >> {"seq":0,"request_seq":1,"type":"response","command":"setbreakpoint","success":true,"body":{"type":"scriptId","breakpoint":1,"script_id":33,"line":1,"column":0,"actual_locations”: >> >> [{"line":1,"column":4,"script_id":33}]},"refs":[],"running":true} >> 5 2016-08-16.21:33:18 DebugListBreakpointHandler >> {"seq":1,"request_seq":3,"type":"response","command":"listbreakpoints","success":true,"body":{"breakpoints":[{"number":1,"line":1,"column":0,"groupId":null,"active":true,"condition":null,"actual_locations":[{"line":1,"column":4,"script_id":33}],"type":"scriptId","script_id":33}],"breakOnExceptions":false,"breakOnUncaughtExceptions":false},"refs":[],"running":true} >> 6 debugger.ccSendDebugUserRequest148 >> 7 2016-08-16.21:33:18SendDebugUserRequest{"type": "json", >> "client": "Chrome Canary", "counter":0} >> 8 debugger.ccSendDebugUserRequest162 >> 9 2016-08-16.21:33:18 DebugListBreakpointHandler >> {"seq":2,"type":"event","event":"break","body":{"invocationText":"DebugUserRequest(doc=#<Object>)","sourceLine":1,"sourceColumn":4,"sourceLineText":" >> if (doc.type === \"json\") >> {","script":{"id":33,"name":null,"lineOffset":0,"columnOffset":0,"lineCount":6},"breakpoints":[1]}} >> 10 debugger.ccTestClearBreakPoints208 >> >> <Execution stuck beyond this point> >> >> Line 1-2,4, 5 - basically setup breakpoint and lists them >> Line 3,6,7-9 - trying to call the user supplied JS code but it doesn’t >> proceed to finish execution because it’s waiting at the breakpoint set >> earlier - hoping someone would fire continue/clearbreakpoint >> Line 10 - Attempt to clear breakpoint but this guy can’t proceed further >> because the user supplied code(currently stuck at breakpoint) is holding the >> lock to the isolate >> >> So my question is, how can the user supplied code execution could proceed >> further in this case? > > I think I understand what you mean. It sounds like you should be > using v8::Debug::SendCommand() from the second thread,
Basically I’m trying to provide an IDE support for JS in the bundled product, so IDE would never know when “clearbreakpoint" or “continue” request is going to come. So when a “setbreakpoint” command is fired, I need to point the MessageHandler, SendCommand and ProcessDebugMessage & finally give up the Locker. I can’t hold up Locker from second thread(which I assume you referred to set_break_point thread). Please correct me if my assumption is wrong. > without > grabbing the Locker or changing the debug listener first. Till now, I’ve been doing hit and trail for different combinations to avoid Locker - but I’ve never been able to run various debug command request handler without grabbing Locker. But I see v8 test-debug.cc in all places is testing debug apis without using Locker at all. Sorry I don’t know how to run handler code without grabbing Locker, when you’ve some time could you please comment on gist on what possibly I’m missing? About “changing the debug listener first” - I didn’t get what you mean. Could you give hints on what specific changes you meant? Given you mentioned 3 different approaches that could help solve my current issue(based on whatever explanation I was able to relay), I’m hoping one of them would apply to my use case. > > -- > -- > 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. -- -- 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.
