-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
area-web-jsIssues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.web-dev-compilerweb-evalevaluation support on the webevaluation support on the web
Description
Currently debugger does not have access to type and symbol information from the dev_compiler,
and represents dart objects using JS objects and heuristics to filter information that does not appear
in dart, which sometimes fail.
To make debugger represent dart objects correctly, we need to store symbol and type information
from ddc and communicate it to the debugger.
Work items:
- Design symbol information format and versioning scheme
- Store symbol information by ddc
- Add location of symbols information file to module metadata
- Read symbol information in the debugger, use it to represent dart types and symbols according
to the vm service protocol:
https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md
Needed to solve the following debugging problems:
- Make dwds serve dart objects webdev#982
- [DDC] Provide metadata to help filter non Dart scope properties #40776
- [dev_compiler] Support showing inherited fields in the debugger #45387
- [dartdevc] Variable window in the debugger is showing JS type tables and helper types #45649
- eval: when possible avoid loading chrome scope data #45044 (possibly)
- [dartdevc] Show useful type information when evaluating types #45791 (may also need runtime support)
- Feature-request: A way to obtain function/constructor parameter information through the vm_services #45172 (to implement the requested API for web platform)
- Hover over types could be more useful webdev#1035 (hover over types)
- LibraryDependency does not surface what the show clause was for a library dependency #46221 (missing library dependencies)
- [dartdevc] Add
shows
andhides
to LibraryDependency to the debug symbols #46375 (add show and hide to libraries) globals
are not exposed in the Debugger webdev#2442- [dwds] Late variables show up obfuscated on object drill down webdev#1179 (late variables show obfuscated)
- Identification for synthetic kernel nodes #44262 (filter out synthetic kernel names)
- Remove source mapping from async methods #44374 (filter out extra async frames)
- Seeing obfuscated names on the call stack webdev#1251 (JS names in dart stack)
- Native Javascript objects are visible in the variables window webdev#1371 (JS objects in dart variables window)
- '$this' appears in variables window on a breakpoint inside an extension method webdev#1372 (JS names for dart objects in variables window)
- Help dynamic analysis by providing locations on objects returned from VMSerice calls webdev#1356 (add location to objects returned by VMService)
- Add a way to fetch values for getters for an object through the VM Service(/DDS?) #46723 (help implement getting properties in the UI)
- Internal stack frames are visible when debugging code that uses constructor tearoffs webdev#1399 (internal stack frames are showing)
@Function
,@Field
, and@Class
responses should include populatedlocation
webdev#1428 (program explorer needs locations on symbols)Library
response always returns empty lists for top levelvariables
andfunctions
webdev#1427 (program explorer needs types and symbols in a library)
Note that some of the resolved issues are using workarounds, such as filtering heuristics, which makes the debugger code not resilient to changes in the compilers.
Related: flutter/devtools#3068 (see how the library information is read from the runtime)
Metadata
Metadata
Labels
area-web-jsIssues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.web-dev-compilerweb-evalevaluation support on the webevaluation support on the web