gpt4 book ai didi

dart - 如何有效地使用 dartium 和其他工具来读取/调试客户端 dart 库?

转载 作者:行者123 更新时间:2023-12-03 03:27:15 25 4
gpt4 key购买 nike

动机

阅读/理解 dart 库以覆盖/扩展 dart-sdk 中的类。

我看到的障碍

  • 动态方法调用E.g.

    appendChild_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendChild",[__arg_0]);



    调试器很有用。但是,对于异步代码,我想以后可能会循环数百个微任务。可能基于范围或函数名称的观察点或断点?还是有人在做这件事?还是使用正则表达式搜索文件的唯一方法?
  • Javascript 或 native 代码
    dart 的某些部分依赖于 javascript 或看起来像编译 C 的东西,在那里我看到了一堵无法穿透的墙:
    例如。

    _callMethod(String name, List args) native "JsObject_callMethod";



    Dartium 的调试器不会更深入。

  • 我在做什么

    我想看看当元素附加到另一个元素时如何设置 HtmlElement 的父值。
    出于优化目的,我猜它是由浏览器端编译的 C 处理的。

    问题
  • 技术
    有没有比添加 if("appendChild") == mthis) debugger(); 更好的方法?去图书馆?
  • 除了 dartium 中的工具之外,还有哪些工具可用?
    如果我想深入挖掘,在哪里可以找到资源和提示?
  • 什么时候放弃?
    我如何才能大致了解哪些事情需要深入研究 Chrome 源代码?还是只需要试试看?
  • 最佳答案

    断点有点有限,但是当你看到 callMethod(mthis, "appendChild", ...)在精确调用 JavaScript 方法的 _blink 库中 appendChild带接收器mthis .你会看到它周围的 wrap_jso 和 unwrap_jso 调用,它们正在删除或添加 Dart 包装器到底层 JavaScript 对象。从 1.14 开始,(几乎?)Dartium 中的所有 HTML 调用都是通过 JS Interop 完成的。

    如果你真的想知道 C 代码在这两者之间做什么,请在 SDK checkout 中查找 js_dartium.dart。但是对于大多数目的来说,知道它正在做它所说的并调用 JS 就足够了。您还可以在 devtools 中的 JS 端设置断点并通过这种方式。

    对于技术 - 您可以在闪烁库或 html 中设置断点,但没有任何元断点设施。您还可以查看未缩小的 dart2js 输出以了解实际情况,因为它应该非常相似。除了运行 Dartium 或查看源代码之外,没有太多可用的工具或资源。 sdk/tools/dom .大多数 html_dartium 和所有 _blink 都是使用来自 Chrome IDL 文件的 Python 脚本生成的。

    要回答您最初的问题 - 我很确定它是在浏览器 C 代码中设置的,从 JavaScript 调用。 Dart 与它无关。

    关于dart - 如何有效地使用 dartium 和其他工具来读取/调试客户端 dart 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35221263/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com