YetAnotherUpdate

After some more digging, I found the issue I have is identified node and 
chromium too... 
https://github.com/nodejs/node/commit/b1e26128f317a6f5a5808a0a727e98f80f088b84

So, it looks like the default v8 [platform] isn't chrome-dev-tools 
compatible.
Ibon's case worked as it has a specific Android platform implementation. 
Chromium and Node also have their own platform.

So, I made the most basic platform proxy possible to work around it...
https://github.com/SoylentGraham/V8InspectorMinimal/blob/master/src/TV8Platform.h

And it works!
I can now modify code on the fly, execute from the console.
I can't seem to debug, and pressing pause-execution a few times gives me a 
new assert, but the higher level code is a bit of a mess at this point, so 
I'm probably implementing something wrong...

Still, if anyone else ever finds this problem... V8 alone cannot be used 
with chrome dev tools. (as of 7.1.0.0  

4544e18b0c3845a9fca422cf0903df4803343cf1)

On Friday, 14 September 2018 11:44:33 UTC+1, @soylentgraham wrote:
>
> So the core of my issue at the moment, is this assert (UNIMPLEMENTED)
>
> void 
> DefaultWorkerThreadsTaskRunner::PostDelayedTask(std::unique_ptr<Task> task,
>
>                                                      double 
> delay_in_seconds) {
>
>   base::LockGuard<base::Mutex> guard(&lock_);
>
>   if (terminated_) return;
>
>   if (delay_in_seconds == 0) {
>
>     queue_.Append(std::move(task));
>
>     return;
>
>   }
>
>   // There is no use case for this function with non zero delay_in_second 
> on a
>
>   // worker thread at the moment, but it is still part of the interface.
>
>   UNIMPLEMENTED();
>
> }
>
> from 
>
> DefaultPlatform::CallDelayedOnWorkerThread(
>
> being called by
>
> protocol::Response V8InspectorImpl::EvaluateScope::setTimeout(double 
> timeout) {
>
>   if (m_isolate->IsExecutionTerminating()) {
>
>     return protocol::Response::Error("Execution was terminated");
>
>   }
>
>   m_cancelToken.reset(new CancelToken());
>
>   v8::debug::GetCurrentPlatform()->CallDelayedOnWorkerThread(
>
>       v8::base::make_unique<TerminateTask>(m_isolate, m_cancelToken), 
> timeout);
>
>   return protocol::Response::OK();
>
> }
>
>
>
> so, SetTimeout in the inspector, explicitly uses something we[developers] 
> know isn't implemented...
> From reading things before, Node.js was using the default platform, I 
> think now it has it's own platform. Maybe chromium does too...
> Perhaps the demo/unittest debugger/d8/inspector doesn't call settimeout, 
> so this hasn't been found with default setups...
>
> Maybe I HAVE to implement my own platform to support chrome dev tools and 
> handle delayed jobs...
>
>
> On Thursday, 13 September 2018 17:14:58 UTC+1, @soylentgraham wrote:
>>
>> For any future readers;
>> I went back to trying to build a debug v8 set of libs (wouldnt compile 
>> before, added is_component_build=false which I think fixed that)
>> Built with latest master (4544e18b0c3845a9fca422cf0903df4803343cf1) 
>>
>> Which forced me to correct a few uses of deprecated functions, including 
>> v8::String::NewFromUtf8() with no isolate, so *possibly* that was the 
>> source of the crash re: scriptorigin. I now get an origin in CDT (kinda, it 
>> still breaks in a VMXX file)
>>
>> Then asserts as before in "code that should never be reached" (see 
>> earlier in the thread)
>>
>> [image: Screen Shot 2018-09-13 at 17.08.09.png]
>>
>>
>>
>> On Wednesday, 12 September 2018 17:34:30 UTC+1, @soylentgraham wrote:
>>>
>>> With a lot of back & forth help from Ibon/hyperandroid, we've got a bit 
>>> further in working out which things are good, and which are bad. 
>>> Feels like we're close, but things are still unstable, and a bit 
>>> unresponsive.
>>>
>>> I can kinda break into the code (which only shows *this *in sources)
>>> Still get the assert above from trying to autocomplete too many times. 
>>> (albeit after a RunMessageLoop callback now)
>>> And if I add a script origin, I get a crash trying to stacktrace 
>>> (immediately when connecting, still trying to figure this out, as my 
>>> scriptorigin is okay)
>>>
>>> More stripped back version here (cutting more dependencies out, but all 
>>> my setup, inspector, frontend, messaging is in v8minimal.cpp)
>>> https://github.com/SoylentGraham/V8InspectorMinimal
>>>
>>> On Monday, 27 August 2018 13:49:37 UTC+1, @soylentgraham wrote:
>>>>
>>>> Through various sources (ie, googling & github) I've finally got a bit 
>>>> of a grasp of the flow for connecting chrome dev tools to my v8 app. 
>>>> (which 
>>>> is using a pretty recent HEAD build I've built myself with all default 
>>>> settings other than compiling as a static lib[s]. v8-version.h says 
>>>> 7.0.0.0)
>>>>
>>>> I connect via an explicit url (can't quite get json/list/ to show up in 
>>>> chrome yet)
>>>> *chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:8008
>>>>  
>>>> <http://127.0.0.1:8008>*
>>>> (Not sure how relevant the v8only=true and experiments=true are, 
>>>> couldn't find any documentation on this)
>>>>
>>>> This connects to my websocket, and I pass all messages straight to 
>>>> *Session->dispatchProtocolMessage*
>>>>
>>>> My channel then gets *sendResponse's* in return, which I send back to 
>>>> chrome over my websocket.
>>>>
>>>> Chrome dev tools shows essentially an empty debugger, no sources, no 
>>>> console output, no errors...
>>>>
>>>> The responses my isolate/context sends back, suggest maybe I have some 
>>>> JS symbols/modules missing, which maybe I need to implement?
>>>> I'm kinda assuming this, as the debugger. methods succeed, but things 
>>>> like *Inspector.enable* (which I haven't found anyone implementing, 
>>>> but some people are implementing Inspector objects, just with different 
>>>> methods) fail
>>>>
>>>> *Chrome tools message: {"id":16,"method":"Inspector.enable"}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Inspector.enable' wasn't 
>>>> found"},"id":16}*
>>>> Is this why chrome isn't proceeding with anything?
>>>> Am I supposed to implement these, or perhaps are they missing from my 
>>>> native blobs when I built my v8 libraries?
>>>>
>>>> My overloads of the inspector client functions like 
>>>> *runMessageLoopOnPause* aren't being called, but I assume that's just 
>>>> because I haven't gotten to any stage where commands are being evaluated?
>>>>
>>>> Below is what I get when I connect chrome, but then it just sits there 
>>>> :)
>>>>
>>>> Thanks for any pointers in the right direction!
>>>>
>>>> *Chrome tools message: 
>>>> {"id":1,"method":"Network.enable","params":{"maxPostDataSize":65536}}*
>>>>
>>>> *Channel response: {"error":{"code":-32601,"message":"'Network.enable' 
>>>> wasn't found"},"id":1}*
>>>>
>>>> *Chrome tools message: {"id":2,"method":"Page.enable"}*
>>>>
>>>> *Channel response: {"error":{"code":-32601,"message":"'Page.enable' 
>>>> wasn't found"},"id":2}*
>>>>
>>>> *Chrome tools message: {"id":3,"method":"Page.getResourceTree"}*
>>>>
>>>> *Chrome tools message: {"id":4,"method":"Profiler.enable"}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Page.getResourceTree' wasn't 
>>>> found"},"id":3}*
>>>>
>>>> *Channel response: {"id":4,"result":{}}*
>>>>
>>>> *Chrome tools message: {"id":5,"method":"Runtime.enable"}*
>>>>
>>>> *Channel response: 
>>>> {"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"","name":"PopEngineContextName"}}}*
>>>>
>>>> *Channel response: {"id":5,"result":{}}*
>>>>
>>>> *Chrome tools message: {"id":6,"method":"Debugger.enable"}*
>>>>
>>>> *Channel response: 
>>>> {"method":"Debugger.scriptParsed","params":{"scriptId":"9","url":"","startLine":0,"startColumn":0,"endLine":1,"endColumn":0,"executionContextId":1,"hash":"2a70962568dbbde00fb323decd63c2ca137b304c","isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":17}}*
>>>>
>>>> *Channel response: 
>>>> {"id":6,"result":{"debuggerId":"(6B1A58050CBFAE70E5B41C5556E5520D)"}}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":7,"method":"Debugger.setPauseOnExceptions","params":{"state":"uncaught"}}*
>>>>
>>>> *Channel response: {"id":7,"result":{}}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":8,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":32}}*
>>>>
>>>> *Channel response: {"id":8,"result":{}}*
>>>>
>>>> *Chrome tools message: {"id":9,"method":"DOM.enable"}*
>>>>
>>>> *Channel response: {"error":{"code":-32601,"message":"'DOM.enable' 
>>>> wasn't found"},"id":9}*
>>>>
>>>> *Chrome tools message: {"id":10,"method":"CSS.enable"}*
>>>>
>>>> *Channel response: {"error":{"code":-32601,"message":"'CSS.enable' 
>>>> wasn't found"},"id":10}*
>>>>
>>>> *Chrome tools message: {"id":11,"method":"Overlay.enable"}*
>>>>
>>>> *Channel response: {"error":{"code":-32601,"message":"'Overlay.enable' 
>>>> wasn't found"},"id":11}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":12,"method":"Overlay.setShowViewportSizeOnResize","params":{"show":true}}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Overlay.setShowViewportSizeOnResize' 
>>>> wasn't found"},"id":12}*
>>>>
>>>> *Chrome tools message: {"id":13,"method":"Log.enable"}*
>>>>
>>>> *Channel response: {"error":{"code":-32601,"message":"'Log.enable' 
>>>> wasn't found"},"id":13}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":14,"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},{"name":"discouragedAPIUse","threshold":-1}]}}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Log.startViolationsReport' wasn't 
>>>> found"},"id":14}*
>>>>
>>>> *Chrome tools message: {"id":15,"method":"ServiceWorker.enable"}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'ServiceWorker.enable' wasn't 
>>>> found"},"id":15}*
>>>>
>>>> *Chrome tools message: {"id":16,"method":"Inspector.enable"}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Inspector.enable' wasn't 
>>>> found"},"id":16}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":17,"method":"Target.setAutoAttach","params":{"autoAttach":true,"waitForDebuggerOnStart":true}}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Target.setAutoAttach' wasn't 
>>>> found"},"id":17}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":18,"method":"Target.setDiscoverTargets","params":{"discover":true}}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Target.setDiscoverTargets' wasn't 
>>>> found"},"id":18}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":19,"method":"Target.setRemoteLocations","params":{"locations":[{"host":"localhost","port":9229}]}}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Target.setRemoteLocations' wasn't 
>>>> found"},"id":19}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":20,"method":"Debugger.setBlackboxPatterns","params":{"patterns":["/main\\.js\\b"]}}*
>>>>
>>>> *Channel response: {"id":20,"result":{}}*
>>>>
>>>> *Chrome tools message: 
>>>> {"id":21,"method":"Page.getNavigationHistory","params":{}}*
>>>>
>>>> *Channel response: 
>>>> {"error":{"code":-32601,"message":"'Page.getNavigationHistory' wasn't 
>>>> found"},"id":21}*
>>>>
>>>>
>>>>
>>>>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
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 v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to