flutter / flutter/devtools

Wire up dart:developer inspect(object) to Dart DevTools

Aperta
#2,613 5 commenti 1 reazione 0 assegnatari Vedi su GitHub
fix it friday P3 screen: debugger
Lingua principale
Dart
Stelle
1.7k
Fork
404
Merge medio
6g 17h
PR unite (30g)
18

Descrizione

## Feature request

AngularDart DevTools needs the means to jump to the Dart source for a given class in the Debugger view.

## Context

In the JavaScript world, this is easily achieved by passing a `function` (or class) to the Chrome Console [inspect(object)](https://developers.google.com/web/tools/chrome-devtools/console/utilities#inspect) function. This in turn opens the location of the function definition in the Chrome Sources panel.

This approach is undesirable for AngularDart for two reasons:

1. We want to direct users to the Debugger tab in Dart DevTools over Chrome Sources, because ultimately this is where setting breakpoints will be most useful.

2. `inspect()` is a JavaScript API which requires interacting with the JavaScript representation of a Dart object. The Dart for Web team has explicitly stated that the JavaScript representation of Dart objects is not stable nor intended for use in this manner. Furthermore, the source maps don't accurately map the class definitions and "constructor" functions back to the correct Dart locations.

## Implementation

A possible solution–as suggested by the title–is to have Dart DevTools listen for dart:developer [inspect()](https://api.dart.dev/stable/2.10.4/dart-developer/inspect.html) requests on the VM service protocol. I believe the `Debug` stream emits events with [EventKind](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#eventkind) `Inspect` whenever `inspect()` is called. Given a Dart type, it could retrieve the source location from its [Class](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#class) and use that to open the Debugger at that location.

@jacob314 @grouma

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da dart:developer inspect(), dal Debug stream del VM service protocol e da EventKind Inspect, nonché dai dati sulla posizione del codice sorgente di Class descritti in service.md. Segui il modo in cui Dart DevTools apre il Debugger in una posizione del codice sorgente. Il lavoro è completato quando una richiesta inspect può indirizzare DevTools al codice sorgente Dart della classe specificata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
dart
Ambito
devtools
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.