![](/img/trans.png)
[英]Is it enough to debug my Dart-written client webapp in Dartium only?
[英]How to use dartium and other tools effectively to read / debug client side dart library?
阅读/理解dart库以覆盖/扩展dart-sdk中的类。
动态方法调用
例如
appendChild_Callback_1_(mthis,__arg_0)=> Blink_JsNative_DomException.callMethod(mthis,“ appendChild”,[__ arg_0]);
调试器很有用。 但是,使用异步代码,我想以后可能会有数百个微任务循环。 基于作用域或函数名称的观察点或断点可能吗?
还是有人在工作? 还是用正则表达式搜索文件的唯一方法?
Javascript或本机代码
dart的某些部分取决于javascript或看起来像编译C的东西,在那儿我看到了一块坚不可摧的墙:
例如
_callMethod(字符串名称,列表参数)原生“ JsObject_callMethod”;
Dartium的调试器不会更深入。
我想看看当元素附加到另一个元素时如何设置HtmlElement的父值。 出于优化目的,我认为它是由浏览器端编译的C处理的。
if("appendChild") == mthis) debugger();
更好的方法了if("appendChild") == mthis) debugger();
去图书馆? 断点有所限制,但是当您看到_blink库中的callMethod(mthis, "appendChild", ...)
恰好以接收者mthis
调用JavaScript方法appendChild
时。 并且您将看到关于它的wrap_jso和unwrap_jso调用,这些调用正在将Dart包装器添加或添加到基础JavaScript对象。 从1.14开始,(几乎?)Dartium中的所有HTML调用都是通过JS Interop完成的。
如果您真的想知道C代码在这之间的作用,请在SDK签出中查找js_dartium.dart。 但是对于大多数目的来说,足以知道它正在执行所声明的操作并调用JS。 您还可以在devtools的JS端设置一个断点,并通过这种方式来解决。
对于技术-您可以在眨眼库或html中设置断点,但是没有任何元断点功能。 您还可以查看未缩小的dart2js输出,以了解实际情况,因为它应该非常相似。 除了运行Dartium或查看源代码外,没有太多可用的工具或资源。 sdk/tools/dom
。 大部分html_dartium和所有_blink都是使用Chrome IDL文件中的Python脚本生成的。
要回答您的原始问题-我很确定它已经在从JavaScript调用的浏览器C代码中设置了。 Dart与它无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.