v8/test/inspector/regress/regress-crbug-1253277.js
Benedikt Meurer 6d25f20f35 [debug] Set breakpoints correctly right after function literals.
The logic to locate the correct function to set a breakpoint in based
on script position was treating SharedFunctionInfo::EndPosition() as
inclusive rather than exclusive. There are various assumptions all over
the Debugger that seem to demand this treatment for the toplevel script.
But it's definitely wrong for function literals.

Fixed: chromium:1253277
Change-Id: I3421703673f4d78aee28e923e03e2fca24bc06ac
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3197715
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Kim-Anh Tran <kimanh@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#77186}
2021-10-01 10:11:45 +00:00

24 lines
879 B
JavaScript

// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
const {contextGroup, Protocol, session} = InspectorTest.start('Regression test for crbug.com/1253277');
const url = 'foo.js';
contextGroup.addScript('function foo(){}foo()', 0, 0, url);
session.setupScriptMap();
InspectorTest.runAsyncTestSuite([
async function test() {
await Promise.all([Protocol.Runtime.enable(), Protocol.Debugger.enable()]);
const {result: {breakpointId, locations}} = await Protocol.Debugger.setBreakpointByUrl({
columnNumber: 16,
lineNumber: 0,
url,
});
await session.logBreakLocations(locations);
await Protocol.Debugger.removeBreakpoint({breakpointId});
await Promise.all([Protocol.Runtime.disable(), Protocol.Debugger.disable()]);
}
]);