Hi, When JavaScript execution is paused (e.g. breakpoint is triggered) V8 send to inspector (DevTools backend inside of V8) message with v8::Break type [1]. On this message inspector send via protocol Debugger.paused notification [2] and call V8InspectorClient::runMessageLoopOnPause method [3]. Client should run nested message loop and process following protocol commands from front-end there inside of this function until inspector doesn't call quitMessageLoopOnPause. When quitMessageLoopOnPause is called and after client finishes nested message loop then execution will be returned to inspector code and then JavaScript execution will be resumed.[4] There is no complex logic inside of V8 related to pausing execution - execution is paused as long as runMessageLoopOnPause is running.
You need to write own logic to pause other operations. [1] https://cs.chromium.org/chromium/src/v8/src/debug/debug.cc?rcl=0&l=1767 [2] https://cs.chromium.org/chromium/src/v8/src/inspector/v8-debugger.cc?rcl=1482193199&l=485 [3] https://cs.chromium.org/chromium/src/v8/src/inspector/v8-debugger.cc?rcl=1482193199&l=491 [4] https://cs.chromium.org/chromium/src/v8/src/inspector/v8-debugger.cc?rcl=1482193199&l=493 Thanks, Aleksey. On Monday, December 19, 2016 at 7:32:13 AM UTC-8, ibon tolosana wrote: > > Hi, > > i have successfully integrated remote debugging through chrome dev tools > to an embedded v8 in an android app. > I can see v8's loaded source code, do profiling, memory dumps, etc., but > JS debugging is not working as expected. > > Whenever the debugger hits a breakpoint, the session channel sends a > `{"method":"Debugger.paused"...` message to dev tools frontend. > After that, InspectorClient has its method `runMessageLoopOnPause` called > from V8Debugger, and here is where things don't fully work on my side. > > The JS execution gets only stopped if I don't exit `runMessageLoopOnPause` > method. Otherwise, I would get some debugger information, like evaluated > variables values, but the javascript execution is not stopped. > > My project is quite complex, where several different operations are wired > to javascript, like touch or timers. > I assume all external js calls should be disabled while running > `runMessageLoopOnPause`, maybe until `quitMessageLoopOnPause` is called ?. > However, this is just guessing. For a simpler example, where just some > javascript is compiled and run, w/o threading or external stuff working, > remote debugger works just fine. > > Could anyone point me to a place where i could read about what i am > supposed to do on these methods ? Any hints on how to handle debugger > interaction at this point would be highly appreciated. > > Thanks. > > > -- -- 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.
