Files
sdk/tests/standalone/debugger/deferred_code_test.dart
T
hausner@google.com f96ae9969e Support breakpoints in deferred libraries
This CL introduces latent breakpoints, which are bp in urls that are
not yet loaded. When the VM loads additional scripts through deferred
libraries, latent breakpoints get set.

R=iposva@google.com

Review URL: https://codereview.chromium.org//808643004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42510 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-19 16:35:37 +00:00

47 lines
1.5 KiB
Dart

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Test to verify that a breakpoint can be set in code that is not yet
// loaded, i.e. in a deferred library.
//
// This test forks a second vm process that runs this dart script as
// a debug target.
// Run this test with option --wire to see the json messages sent
// between the processes.
// Run this test with option --verbose to see the stdout and stderr output
// of the debug target process.
import "debug_lib.dart";
import "deferred_code_lib.dart" deferred as D;
main(List<String> arguments) {
if (RunScript(testScript, arguments)) return;
var loaded = false;
print("Hello from debuggee");
D.loadLibrary().then((_) {
loaded = true;
print("Done loading deferred library");
D.stopTheBuck();
});
print("main terminates");
}
// Expected debugger events and commands.
var testScript = [
MatchFrame(0, "main"), // Top frame in trace is function "main".
SetBreakpoint(22), // Breakpoint just before call to loadLibrary().
Resume(),
// Set BP in deferred library code before the loadLibrary() call is executed.
MatchFrame(0, "main"),
MatchLine(22),
MatchLocals({"loaded": "false"}),
SetBreakpoint(10, url: "deferred_code_lib.dart"),
Resume(),
MatchFrame(0, "stopTheBuck"), // Expect to be stopped in deferred library code.
// MatchLine(10), // Line matching only works for the main script.
Resume(),
];