Skip to content

Commit dfd0107

Browse files
author
Anna Gringauze
committed
Hide using debug symbols under a flag, update versions and changelog
1 parent 0711622 commit dfd0107

17 files changed

+101
-22
lines changed

dwds/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## 12.0.0-dev
2+
3+
- Add code for loading symbols generated by DDC, if
4+
`enableDebugSymbols` is set to `true` in `dwds.start`.
5+
To be used by variable inspection, not implemented yet.
6+
7+
**Breaking changes:**
8+
- Add `enableDebugSymbols` parameter `Dwds.start`, false by default.
9+
- Add `symbolsContents` method to `AssetReader`.
10+
111
## 11.1.0
212

313
- Add global functions to the injected client for `dart.developer.postEvent`

dwds/lib/dwds.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class Dwds {
101101
// TODO(annagrin): make expressionCompiler argument required
102102
// [issue 881](https://github.com/dart-lang/webdev/issues/881)
103103
ExpressionCompiler expressionCompiler,
104+
bool enableDebugSymbols,
104105
bool enableDebugExtension,
105106
String hostname,
106107
bool useSseForDebugProxy,
@@ -120,6 +121,7 @@ class Dwds {
120121
enableDevtoolsLaunch ??= true;
121122
spawnDds ??= true;
122123
globalLoadStrategy = loadStrategy;
124+
enableDebugSymbols ??= false;
123125

124126
DevTools devTools;
125127
String extensionUri;
@@ -172,6 +174,7 @@ class Dwds {
172174
useSseForInjectedClient,
173175
serveDevTools,
174176
expressionCompiler,
177+
enableDebugSymbols,
175178
injected,
176179
spawnDds,
177180
);

dwds/lib/src/handlers/dev_handler.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class DevHandler {
6464
final bool _serveDevTools;
6565
final bool _spawnDds;
6666
final ExpressionCompiler _expressionCompiler;
67+
final bool _enableDebugSymbols;
6768
final DwdsInjector _injected;
6869

6970
/// Null until [close] is called.
@@ -86,6 +87,7 @@ class DevHandler {
8687
this._useSseForInjectedClient,
8788
this._serveDevTools,
8889
this._expressionCompiler,
90+
this._enableDebugSymbols,
8991
this._injected,
9092
this._spawnDds) {
9193
_subs.add(buildResults.listen(_emitBuildResults));
@@ -204,6 +206,7 @@ class DevHandler {
204206
// This will provide a websocket based service.
205207
useSse: false,
206208
expressionCompiler: _expressionCompiler,
209+
enableDebugSymbols: _enableDebugSymbols,
207210
spawnDds: _spawnDds,
208211
);
209212
}
@@ -485,6 +488,7 @@ class DevHandler {
485488
},
486489
useSse: _useSseForDebugProxy,
487490
expressionCompiler: _expressionCompiler,
491+
enableDebugSymbols: _enableDebugSymbols,
488492
spawnDds: _spawnDds,
489493
);
490494
var appServices =

dwds/lib/src/services/chrome_proxy_service.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ class ChromeProxyService implements VmServiceInterface {
9595
final ExpressionCompiler _compiler;
9696
ExpressionEvaluator _expressionEvaluator;
9797

98+
final bool _enableDebugSymbols;
99+
98100
bool terminatingIsolates = false;
99101

100102
ChromeProxyService._(
@@ -107,6 +109,7 @@ class ChromeProxyService implements VmServiceInterface {
107109
this._skipLists,
108110
this.executionContext,
109111
this._compiler,
112+
this._enableDebugSymbols,
110113
) {
111114
var debugger = Debugger.create(
112115
remoteDebugger,
@@ -120,6 +123,10 @@ class ChromeProxyService implements VmServiceInterface {
120123
? null
121124
: ExpressionEvaluator(debugger, _locations, _modules, _compiler);
122125
_debuggerCompleter.complete(debugger);
126+
127+
if (_enableDebugSymbols) {
128+
throw UnimplementedError('Debug symbols are not uset yet.');
129+
}
123130
}
124131

125132
static Future<ChromeProxyService> create(
@@ -129,7 +136,8 @@ class ChromeProxyService implements VmServiceInterface {
129136
LoadStrategy loadStrategy,
130137
AppConnection appConnection,
131138
ExecutionContext executionContext,
132-
ExpressionCompiler expressionCompiler) async {
139+
ExpressionCompiler expressionCompiler,
140+
bool enableDebugSymbols) async {
133141
final vm = VM(
134142
name: 'ChromeDebugProxy',
135143
operatingSystem: Platform.operatingSystem,
@@ -158,6 +166,7 @@ class ChromeProxyService implements VmServiceInterface {
158166
skipLists,
159167
executionContext,
160168
expressionCompiler,
169+
enableDebugSymbols,
161170
);
162171
unawaited(service.createIsolate(appConnection));
163172
return service;

dwds/lib/src/services/debug_service.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ class DebugService {
214214
void Function(Map<String, dynamic>) onResponse,
215215
bool spawnDds = true,
216216
bool useSse,
217-
ExpressionCompiler expressionCompiler}) async {
217+
ExpressionCompiler expressionCompiler,
218+
bool enableDebugSymbols}) async {
218219
useSse ??= false;
219220
var chromeProxyService = await ChromeProxyService.create(
220221
remoteDebugger,
@@ -223,7 +224,8 @@ class DebugService {
223224
loadStrategy,
224225
appConnection,
225226
executionContext,
226-
expressionCompiler);
227+
expressionCompiler,
228+
enableDebugSymbols);
227229
var authToken = _makeAuthToken();
228230
var serviceExtensionRegistry = ServiceExtensionRegistry();
229231
Handler handler;

dwds/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: dwds
22
# Every time this changes you need to run `pub run build_runner build`.
3-
version: 11.1.0
3+
version: 12.0.0-dev
44
homepage: https://github.com/dart-lang/webdev/tree/master/dwds
55
description: >-
66
A service that proxies between the Chrome debug protocol and the Dart VM

dwds/test/fixtures/context.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ class TestContext {
118118
bool restoreBreakpoints,
119119
CompilationMode compilationMode,
120120
bool enableExpressionEvaluation,
121+
bool enableDebugSymbols,
121122
bool verbose}) async {
122123
reloadConfiguration ??= ReloadConfiguration.none;
123124
serveDevTools ??= false;
@@ -127,6 +128,7 @@ class TestContext {
127128
waitToDebug ??= false;
128129
compilationMode ??= CompilationMode.buildDaemon;
129130
enableExpressionEvaluation ??= false;
131+
enableDebugSymbols ??= false;
130132
spawnDds ??= true;
131133
verbose ??= false;
132134

@@ -172,6 +174,10 @@ class TestContext {
172174
'--define',
173175
'build_web_compilers|ddc=generate-full-dill=true',
174176
],
177+
if (enableDebugSymbols) ...[
178+
'--define',
179+
'build_web_compilers|ddc=generate-symbols=true',
180+
],
175181
if (verbose) '--verbose',
176182
];
177183
daemonClient = await connectClient(workingDirectory, options,
@@ -225,6 +231,7 @@ class TestContext {
225231
[fileSystemRoot],
226232
'org-dartlang-app',
227233
_outputDir.path,
234+
enableDebugSymbols,
228235
verbose);
229236

230237
var assetServerPort = await findUnusedPort();
@@ -289,6 +296,7 @@ class TestContext {
289296
urlEncoder,
290297
restoreBreakpoints,
291298
expressionCompiler,
299+
enableDebugSymbols,
292300
spawnDds,
293301
ddcService,
294302
);

dwds/test/fixtures/server.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class TestServer {
7272
UrlEncoder urlEncoder,
7373
bool restoreBreakpoints,
7474
ExpressionCompiler expressionCompiler,
75+
bool enableDebugSymbols,
7576
bool spawnDds,
7677
ExpressionCompilerService ddcService,
7778
) async {
@@ -107,6 +108,7 @@ class TestServer {
107108
hostname: hostname,
108109
urlEncoder: urlEncoder,
109110
expressionCompiler: expressionCompiler,
111+
enableDebugSymbols: enableDebugSymbols,
110112
devtoolsLauncher: serveDevTools
111113
? (hostname) async {
112114
var server = await devtools_lancher.serveDevTools(

frontend_server_common/lib/src/asset_server.dart

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class TestAssetServer implements AssetReader {
158158
var codeBytes = codeFile.readAsBytesSync();
159159
var sourcemapBytes = sourcemapFile.readAsBytesSync();
160160
var metadataBytes = metadataFile.readAsBytesSync();
161-
var symbolsBytes = symbolsFile.readAsBytesSync();
161+
var symbolsBytes = symbolsFile?.readAsBytesSync();
162162
var manifest =
163163
castStringKeyedMap(json.decode(manifestFile.readAsStringSync()));
164164
for (var filePath in manifest.keys) {
@@ -171,11 +171,10 @@ class TestAssetServer implements AssetReader {
171171
var sourcemapOffsets =
172172
(offsets['sourcemap'] as List<dynamic>).cast<int>();
173173
var metadataOffsets = (offsets['metadata'] as List<dynamic>).cast<int>();
174-
var symbolsOffsets = (offsets['symbols'] as List<dynamic>).cast<int>();
174+
175175
if (codeOffsets.length != 2 ||
176176
sourcemapOffsets.length != 2 ||
177-
metadataOffsets.length != 2 ||
178-
symbolsOffsets.length != 2) {
177+
metadataOffsets.length != 2) {
179178
_printTrace('Invalid manifest byte offsets: $offsets');
180179
continue;
181180
}
@@ -219,18 +218,25 @@ class TestAssetServer implements AssetReader {
219218
);
220219
_metadata['$filePath.metadata'] = metadataView;
221220

222-
var symbolsStart = symbolsOffsets[0];
223-
var symbolsEnd = symbolsOffsets[1];
224-
if (symbolsStart < 0 || symbolsEnd > symbolsBytes.lengthInBytes) {
225-
_printTrace('Invalid byte index: [$symbolsStart, $symbolsEnd]');
226-
continue;
221+
if (symbolsBytes != null) {
222+
var symbolsOffsets = (offsets['symbols'] as List<dynamic>).cast<int>();
223+
if (symbolsOffsets.length != 2) {
224+
_printTrace('Invalid manifest byte offsets: $offsets');
225+
continue;
226+
}
227+
var symbolsStart = symbolsOffsets[0];
228+
var symbolsEnd = symbolsOffsets[1];
229+
if (symbolsStart < 0 || symbolsEnd > symbolsBytes.lengthInBytes) {
230+
_printTrace('Invalid byte index: [$symbolsStart, $symbolsEnd]');
231+
continue;
232+
}
233+
var symbolsView = Uint8List.view(
234+
symbolsBytes.buffer,
235+
symbolsStart,
236+
symbolsEnd - symbolsStart,
237+
);
238+
_metadata['$filePath.symbols'] = symbolsView;
227239
}
228-
var symbolsView = Uint8List.view(
229-
symbolsBytes.buffer,
230-
symbolsStart,
231-
symbolsEnd - symbolsStart,
232-
);
233-
_metadata['$filePath.symbols'] = symbolsView;
234240

235241
modules.add(filePath);
236242
}

frontend_server_common/lib/src/devfs.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class WebDevFS {
3131
this.packagesPath,
3232
this.root,
3333
this.urlTunneller,
34+
this.enableDebugSymbols = false,
3435
});
3536

3637
final FileSystem fileSystem;
@@ -41,6 +42,7 @@ class WebDevFS {
4142
final String packagesPath;
4243
final String root;
4344
final UrlEncoder urlTunneller;
45+
final bool enableDebugSymbols;
4446
Directory _savedCurrentDirectory;
4547
List<Uri> sources;
4648

@@ -126,8 +128,11 @@ class WebDevFS {
126128
parentDirectory.childFile('${compilerOutput.outputFilename}.map');
127129
metadataFile = parentDirectory
128130
.childFile('${compilerOutput.outputFilename}.metadata');
129-
symbolsFile =
130-
parentDirectory.childFile('${compilerOutput.outputFilename}.symbols');
131+
132+
symbolsFile = enableDebugSymbols
133+
? parentDirectory
134+
.childFile('${compilerOutput.outputFilename}.symbols')
135+
: null;
131136
modules = assetServer.write(
132137
codeFile, manifestFile, sourcemapFile, metadataFile, symbolsFile);
133138
} on FileSystemException catch (err) {

frontend_server_common/lib/src/resident_runner.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class ResidentWebRunner {
3030
this.fileSystemRoots,
3131
this.fileSystemScheme,
3232
this.outputPath,
33+
this.enableDebugSymbols,
3334
bool verbose) {
3435
generator = ResidentCompiler(dartSdkPath,
3536
packagesPath: packagesPath,
@@ -47,6 +48,7 @@ class ResidentWebRunner {
4748
final String outputPath;
4849
final List<String> fileSystemRoots;
4950
final String fileSystemScheme;
51+
final bool enableDebugSymbols;
5052

5153
ResidentCompiler generator;
5254
ExpressionCompiler expressionCompiler;
@@ -68,6 +70,7 @@ class ResidentWebRunner {
6870
packagesPath: packagesPath,
6971
root: root,
7072
urlTunneller: urlTunneller,
73+
enableDebugSymbols: enableDebugSymbols,
7174
);
7275
uri = await devFS.create();
7376

webdev/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 2.8.0-dev
2+
3+
- Read DDC debug symbols under a `--enable-debug-symbols` flag.
4+
Disabled by default. The feature is under development.
5+
16
## 2.7.4
27

38
- Allow the latest build_runner, build_web_compilers, and build_daemon

webdev/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ Common:
115115
(defaults to on)
116116
-e, --[no-]enable-expression-evaluation Enable expression evaluation features
117117
in the debugger.
118+
-s, --[no-]enable-debug-symbols Enable expression evaluation features
119+
in the debugger.
118120
-v, --verbose Enables verbose logging.
119121
120122
Run "webdev help" to see global options.
@@ -157,6 +159,8 @@ Usage: webdev build [arguments]
157159
(defaults to on)
158160
-e, --[no-]enable-expression-evaluation Enable expression evaluation features
159161
in the debugger.
162+
-s, --[no-]enable-debug-symbols Enable expression evaluation features
163+
in the debugger.
160164
-v, --verbose Enables verbose logging.
161165
162166
Run "webdev help" to see global options.

0 commit comments

Comments
 (0)