[英]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.