Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: runtime/vm/service/service.md

Issue 1312763010: Support column-based breakpoints in the VM and Observatory. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: hausner review Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/service.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Dart VM Service Protocol 2.0 1 # Dart VM Service Protocol 3.0
2 2
3 > Please post feedback to the [observatory-discuss group][discuss-list] 3 > Please post feedback to the [observatory-discuss group][discuss-list]
4 4
5 This document describes of _version 2.0_ of the Dart VM Service Protocol. This 5 This document describes of _version 3.0_ of the Dart VM Service Protocol. This
6 protocol is used to communicate with a running Dart Virtual Machine. 6 protocol is used to communicate with a running Dart Virtual Machine.
7 7
8 To use the Service Protocol, start the VM with the *--observe* flag. 8 To use the Service Protocol, start the VM with the *--observe* flag.
9 The VM will start a webserver which services protocol requests via WebSocket. 9 The VM will start a webserver which services protocol requests via WebSocket.
10 It is possible to make HTTP (non-WebSocket) requests, 10 It is possible to make HTTP (non-WebSocket) requests,
11 but this does not allow access to VM _events_ and is not documented 11 but this does not allow access to VM _events_ and is not documented
12 here. 12 here.
13 13
14 The Service Protocol uses [JSON-RPC 2.0][]. 14 The Service Protocol uses [JSON-RPC 2.0][].
15 15
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 - [Frame](#frame) 61 - [Frame](#frame)
62 - [Function](#function) 62 - [Function](#function)
63 - [Instance](#instance) 63 - [Instance](#instance)
64 - [Isolate](#isolate) 64 - [Isolate](#isolate)
65 - [Library](#library) 65 - [Library](#library)
66 - [LibraryDependency](#librarydependency) 66 - [LibraryDependency](#librarydependency)
67 - [MapAssociation](#mapassociation) 67 - [MapAssociation](#mapassociation)
68 - [Message](#message) 68 - [Message](#message)
69 - [Null](#null) 69 - [Null](#null)
70 - [Object](#object) 70 - [Object](#object)
71 - [Response](#response)
71 - [Sentinel](#sentinel) 72 - [Sentinel](#sentinel)
72 - [SentinelKind](#sentinelkind) 73 - [SentinelKind](#sentinelkind)
73 - [Script](#script) 74 - [Script](#script)
74 - [SourceLocation](#sourcelocation) 75 - [SourceLocation](#sourcelocation)
75 - [Stack](#stack) 76 - [Stack](#stack)
76 - [StepOption](#stepoption) 77 - [StepOption](#stepoption)
77 - [Success](#success) 78 - [Success](#success)
78 - [TypeArguments](#typearguments) 79 - [TypeArguments](#typearguments)
79 » - [Response](#response) 80 » - [UresolvedSourceLocation](#unresolvedsourcelocation)
80 - [Version](#version) 81 - [Version](#version)
81 - [VM](#vm) 82 - [VM](#vm)
82 - [Revision History](#revision-history) 83 - [Revision History](#revision-history)
83 84
84 ## RPCs, Requests, and Responses 85 ## RPCs, Requests, and Responses
85 86
86 An RPC request is a JSON object sent to the server. Here is an 87 An RPC request is a JSON object sent to the server. Here is an
87 example [getVersion](#getversion) request: 88 example [getVersion](#getversion) request:
88 89
89 ``` 90 ```
(...skipping 12 matching lines...) Expand all
102 _id_ property to pair it with the corresponding request. If the RPC 103 _id_ property to pair it with the corresponding request. If the RPC
103 was successful, the _result_ property provides the result. 104 was successful, the _result_ property provides the result.
104 105
105 Here is an example response for our [getVersion](#getversion) request above: 106 Here is an example response for our [getVersion](#getversion) request above:
106 107
107 ``` 108 ```
108 { 109 {
109 "jsonrpc": "2.0", 110 "jsonrpc": "2.0",
110 "result": { 111 "result": {
111 "type": "Version", 112 "type": "Version",
112 "major": 2, 113 "major": 3,
113 "minor": 0 114 "minor": 0
114 } 115 }
115 "id": "1" 116 "id": "1"
116 } 117 }
117 ``` 118 ```
118 119
119 Parameters for RPC requests are always provided as _named_ parameters. 120 Parameters for RPC requests are always provided as _named_ parameters.
120 The JSON-RPC spec provides for _positional_ parameters as well, but they 121 The JSON-RPC spec provides for _positional_ parameters as well, but they
121 are not supported by the Dart VM. 122 are not supported by the Dart VM.
122 123
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 293
293 ## Versioning 294 ## Versioning
294 295
295 The [getVersion](#getversion) RPC can be used to find the version of the protoco l 296 The [getVersion](#getversion) RPC can be used to find the version of the protoco l
296 returned by a VM. The _Version_ response has a major and a minor 297 returned by a VM. The _Version_ response has a major and a minor
297 version number: 298 version number:
298 299
299 ``` 300 ```
300 "result": { 301 "result": {
301 "type": "Version", 302 "type": "Version",
302 "major": 2, 303 "major": 3,
303 "minor": 0 304 "minor": 0
304 } 305 }
305 ``` 306 ```
306 307
307 The major version number is incremented when the protocol is changed 308 The major version number is incremented when the protocol is changed
308 in a potentially _incompatible_ way. An example of an incompatible 309 in a potentially _incompatible_ way. An example of an incompatible
309 change is removing a non-optional property from a result. 310 change is removing a non-optional property from a result.
310 311
311 The minor version number is incremented when the protocol is changed 312 The minor version number is incremented when the protocol is changed
312 in a _backwards compatible_ way. An example of a backwards compatible 313 in a _backwards compatible_ way. An example of a backwards compatible
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 ReturnType methodName(parameterType parameterName [optional) 365 ReturnType methodName(parameterType parameterName [optional)
365 ``` 366 ```
366 367
367 A description of the return types and parameter types is provided 368 A description of the return types and parameter types is provided
368 in the section on [public types](#public-types). 369 in the section on [public types](#public-types).
369 370
370 ### addBreakpoint 371 ### addBreakpoint
371 372
372 ``` 373 ```
373 Breakpoint addBreakpoint(string isolateId, 374 Breakpoint addBreakpoint(string isolateId,
374 string scriptId, 375 string scriptId [optional],
375 int line) 376 string scriptUri [optional],
377 int line,
378 int column [optional])
376 ``` 379 ```
377 380
378 The _addBreakpoint_ RPC is used to add a breakpoint at a specific line 381 The _addBreakpoint_ RPC is used to add a breakpoint at a specific line
379 of some script. 382 of some script.
380 383
384 The _scriptId_ or _scriptUri_ parameter is used to specify the target
385 script. One of these two parameters must always be provided.
386
387 The _line_ parameter is used to specify the target line for the
388 breakpoint. If there are multiple possible breakpoints on the target
389 line, then the VM will place the breakpoint at the location which
390 would execute soonest. If it is not possible to set a breakpoint at
391 the target line, the breakpoint will be added at the next possible
392 breakpoint location within the same function.
393
394 The _column_ parameter may be optionally specified. This is useful
395 for targeting a specific breakpoint on a line with multiple possible
396 breakpoints.
397
381 If no breakpoint is possible at that line, the _102_ (Cannot add 398 If no breakpoint is possible at that line, the _102_ (Cannot add
382 breakpoint) error code is returned. 399 breakpoint) error code is returned.
383 400
384 Note that breakpoints are added and removed on a per-isolate basis. 401 Note that breakpoints are added and removed on a per-isolate basis.
385 402
386 See [Breakpoint](#breakpoint). 403 See [Breakpoint](#breakpoint).
387 404
388 ### addBreakpointAtEntry 405 ### addBreakpointAtEntry
389 406
390 ``` 407 ```
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 769
753 If the variable has been optimized out by the compiler, the _value_ 770 If the variable has been optimized out by the compiler, the _value_
754 will be the _OptimizedOut_ [Sentinel](#sentinel). 771 will be the _OptimizedOut_ [Sentinel](#sentinel).
755 772
756 ### Breakpoint 773 ### Breakpoint
757 774
758 ``` 775 ```
759 class Breakpoint extends Object { 776 class Breakpoint extends Object {
760 int breakpointNumber; 777 int breakpointNumber;
761 bool resolved; 778 bool resolved;
762 SourceLocation location; 779 SourceLocation|UnresolvedSourceLocation location;
763 } 780 }
764 ``` 781 ```
765 782
766 A _Breakpoint_ describes a debugger breakpoint. 783 A _Breakpoint_ describes a debugger breakpoint.
767 784
768 ### Class 785 ### Class
769 786
770 ``` 787 ```
771 class @Class extends @Object { 788 class @Class extends @Object {
772 // The name of this class. 789 // The name of this class.
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 // 1797 //
1781 // Note that the size can be zero for some objects. In the current 1798 // Note that the size can be zero for some objects. In the current
1782 // VM implementation, this occurs for small integers, which are 1799 // VM implementation, this occurs for small integers, which are
1783 // stored entirely within their object pointers. 1800 // stored entirely within their object pointers.
1784 int size [optional]; 1801 int size [optional];
1785 } 1802 }
1786 ``` 1803 ```
1787 1804
1788 An _Object_ is a persistent object that is owned by some isolate. 1805 An _Object_ is a persistent object that is owned by some isolate.
1789 1806
1807 ### Response
1808
1809 ```
1810 class Response {
1811 // Every response returned by the VM Service has the
1812 // type property. This allows the client distinguish
1813 // between different kinds of responses.
1814 string type;
1815 }
1816 ```
1817
1818 Every non-error response returned by the Service Protocol extends _Response_.
1819 By using the _type_ property, the client can determine which [type](#types)
1820 of response has been provided.
1821
1790 ### Sentinel 1822 ### Sentinel
1791 1823
1792 ``` 1824 ```
1793 class Sentinel extends Response { 1825 class Sentinel extends Response {
1794 // What kind of sentinel is this? 1826 // What kind of sentinel is this?
1795 SentinelKind kind; 1827 SentinelKind kind;
1796 1828
1797 // A reasonable string representation of this sentinel. 1829 // A reasonable string representation of this sentinel.
1798 string valueAsString; 1830 string valueAsString;
1799 } 1831 }
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1948 // 1980 //
1949 // The value will always be one of the kinds: 1981 // The value will always be one of the kinds:
1950 // Type, TypeRef, TypeParameter, BoundedType. 1982 // Type, TypeRef, TypeParameter, BoundedType.
1951 @Instance[] types; 1983 @Instance[] types;
1952 } 1984 }
1953 ``` 1985 ```
1954 1986
1955 A _TypeArguments_ object represents the type argument vector for some 1987 A _TypeArguments_ object represents the type argument vector for some
1956 instantiated generic type. 1988 instantiated generic type.
1957 1989
1958 ### Response 1990 ### UnresolvedSourceLocation
1959 1991
1960 ``` 1992 ```
1961 class Response { 1993 class UnresolvedSourceLocation extends Response {
1962 // Every response returned by the VM Service has the 1994 // The script containing the source location if the script has been loaded.
1963 // type property. This allows the client distinguish 1995 @Script script [optional];
1964 // between different kinds of responses. 1996
1965 string type; 1997 // The uri of the script containing the source location if the script
1998 // has yet to be loaded.
1999 string scriptUri [optional];
2000
2001 // An approximate token position for the source location. This may
2002 // change when the location is resolved.
2003 int tokenPos [optional];
2004
2005 // An approximate line number for the source location. This may
2006 // change when the location is resolved.
2007 int line [optional];
2008
2009 // An approximate column number for the source location. This may
2010 // change when the location is resolved.
2011 int column [optional];
2012
1966 } 2013 }
1967 ``` 2014 ```
1968 2015
1969 Every non-error response returned by the Service Protocol extends _Response_. 2016 The _UnresolvedSourceLocation_ class is used to refer to an unresolved
1970 By using the _type_ property, the client can determine which [type](#types) 2017 breakpoint location. As such, it is meant to approximate the final
1971 of response has been provided. 2018 location of the breakpoint but it is not exact.
2019
2020 Either the _script_ or the _scriptUri_ field will be present.
2021
2022 Either the _tokenPos_ or the _line_ field will be present.
2023
2024 The _column_ field will only be present when the breakpoint was
2025 specified with a specific column number.
1972 2026
1973 ### Version 2027 ### Version
1974 2028
1975 ``` 2029 ```
1976 class Version extends Response { 2030 class Version extends Response {
1977 // The major version number is incremented when the protocol is changed 2031 // The major version number is incremented when the protocol is changed
1978 // in a potentially incompatible way. 2032 // in a potentially incompatible way.
1979 int major; 2033 int major;
1980 2034
1981 // The minor version number is incremented when the protocol is changed 2035 // The minor version number is incremented when the protocol is changed
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2013 // A list of isolates running in the VM. 2067 // A list of isolates running in the VM.
2014 @Isolate[] isolates; 2068 @Isolate[] isolates;
2015 } 2069 }
2016 ``` 2070 ```
2017 2071
2018 ## Revision History 2072 ## Revision History
2019 2073
2020 version | comments 2074 version | comments
2021 ------- | -------- 2075 ------- | --------
2022 1.0 draft 1 | initial revision 2076 1.0 draft 1 | initial revision
2077 1.1 | Describe protocol version 2.0.
2078 1.2 | Describe protocol version 3.0. Added UnresolvedSourceLocation.
2023 2079
2024 2080
2025 [discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observato ry-discuss 2081 [discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observato ry-discuss
OLDNEW
« no previous file with comments | « runtime/vm/service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698