Hi Alexey, thanks for the answer.
I figured out what was happening on my side. Basically a threading issue: My app's v8 thread got blocked on runMessageLoopOnPause, so now i make a synchronous runMessageLoopOnPause execution. Before, i was exiting runMessageLoopOnPause to make an asynchronous loop for it, which made debugger breakpoints not work (already left runMessageLoopOnPause). I get now correctly notified on quitMessageLoopOnPause after sinking all inspector messages. Embedded v8 Inspector integration with chrome dev tools is simply sweet. Thanks for the hard work !!! Best, - i El martes, 20 de diciembre de 2016, 8:47:32 (UTC+1), Alexey Kozyatinskiy escribió: > > 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.
