Repository navigation
Breakpoints can't be set by a debugger (Chrome or VS Code) while the Node program is running #11589
Description
- Version: v7.6.0
- Platform: Windows 10 64 bits Version 1607
- Subsystem: V8
Setting breakpoints while the js-program is running doesn't seem to work from neither Chrome DevTools nor VS Code. The issue seems to be that the debugger calls node, and node receives and process the request, but doesn't sends the respond right away (which is what both debuggers expect). I tested this also against node 6.9.5 and the response is sent right away.
Chrome dev tools call:
{"id":14,"method":"Debugger.getPossibleBreakpoints","params":{"start":{"scriptId":"61","lineNumber":16,"columnNumber":0},"end":{"scriptId":"61","lineNumber":17,"columnNumber":0}}}
VS Code calls:
{ "id": 12, "method": "Debugger.setBreakpointByUrl", "params": { "urlRegex": "<my_path>\app\\.js", "lineNumber": 31, "columnNumber": 0 } }
The response seems to appear the next time that a breakpoint is hit or some console output is printed (I'm not exactly sure)
Following is the test program I used to reproduce this issue.
- node --inspect=9111 --debug-brk app.js
- Resume the debugger so the program continues running
- Attach from Chrome Dev-tools
- While the js-program is running, try to set a breakpoint
- Actual: The verified breakpoint marker doesn't appear Expected: The verified breakpoint marker does appear
'use strict';
console.log('Command line ' + process.argv.join(" "));
console.log('Hello world: 3');
console.log('Hello world: 4');
console.log('Hello world: 5');
var iterationIndex = 0;
function runIteration() {
console.log('Starting iteration: Line 14');
console.log('Iteration: #' + iterationIndex++);
scheduleNextIteration();
console.log('Ending iteration: Line 14');
}
function printTime(time) {
return ("0" + time.getHours()).slice(-2) + ":" +
("0" + time.getMinutes()).slice(-2) + ":" +
("0" + time.getSeconds()).slice(-2);
}
var extraDelay = 60;
var minDelay = 10;
/*
extraDelay = 300;
minDelay = 300;
*/
function scheduleNextIteration() {
var currentTime = new Date();
var secondsUntilNextMinute = 60 - currentTime.getSeconds();
if (secondsUntilNextMinute < minDelay) {
secondsUntilNextMinute += extraDelay;
}
var millisecondsUntilNextIteration = secondsUntilNextMinute * 1000;
var nextIterationTime = new Date(currentTime.getTime() + millisecondsUntilNextIteration);
console.log("Current iteration running at: " + printTime(currentTime) + ". Next iteration scheduled in " + secondsUntilNextMinute + " secs at " + printTime(nextIterationTime));
setTimeout(runIteration,
millisecondsUntilNextIteration);
}
runIteration();
function deadCode() {
console.log('Hello world: 3');
console.log('Hello world: 4');
console.log('Hello world: 5');
console.log('Hello world: 3');
console.log('Hello world: 4');
console.log('Hello world: 5');
}
Activity
mscdex commentedon Feb 27, 2017
/cc @nodejs/v8-inspector
eugeneo commentedon Feb 28, 2017
I have a fix for this, but it is on top of #11431 - let me refactor it to a standalone one.
inspector: libuv notification on incoming message
mbraude commentedon Jun 20, 2017
Hello @eugeneo, this appears to have regressed in Node 8.1.2 and 9.x. Who can take a look? Our Visual Studio tooling no longer works as a result. @digeff can help get a repro or logs if the one above doesn't work.
refack commentedon Jun 20, 2017
@mbraude I can't repro with
8.1.2. How do I change the node executable, that is used?/cc @digeff
eugeneo commentedon Jun 20, 2017
I see some odd behavior with 8.1.2 - breakpoint works inside the function but not if I put at the callsite. Stack looks fine. Might be something in V8, I am investigating.
This may be different from what VS Code hit.
refack commentedon Jun 20, 2017
eugeneo commentedon Jun 20, 2017
I reproduced this in Chrome so it seems to be an issue in the V8. I opened Chrome bug https://bugs.chromium.org/p/chromium/issues/detail?id=735091 - please let me know if this looks similar to what you are seeing in VS code.
nicothed commentedon Oct 3, 2018
This issue just started appearing this week (or last?). Maybe after a VS Code upgrade?
Am I the only one? How can I know where the issue is?
alexkozy commentedon Oct 3, 2018
I tried to reproduce this issue with dedicated frontend from current stable Chrome, from latest dev Chrome and using ndb with node 8.11 and node 10.11. It looks like it works. Could you provide repro steps?
nicothed commentedon Oct 3, 2018
Oho, so you think I should install ndb? I use node 10.5.0.
I hate to say that but it happens every time. I would say that it started about 2 weeks ago, about when I upgraded to the August version of VS Code. But that's also when I started using async/await functions. I don't think I installed new modules or anything else significant.
While I'm at it (I know it's unrelated), are there ways to edit code while debugging, and run the updated code without restarting the app? WebStorm managed to do it, but I'm unsure if VS Code can.
roblourens commentedon Oct 3, 2018
@nicothed you are probably having an issue with debugging in VS Code, not node. If you file an issue on the vscode repo with more details, I can try to help you.
jblazevicClover commentedon May 28, 2019
i deleted node_modules folder and package-lock.json, and do npm install. After that my debugger works like a charm for node and for chrome (breakpoints work)