From 73f86c5c24536dc59ba5fc13e416576c623886da Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 30 May 2026 18:49:38 +0200 Subject: [PATCH] debugger: add more logs to probe mode Add more log points in the probe mode and enable the debuglog int the probe mode tests. Signed-off-by: Joyee Cheung --- lib/internal/debugger/inspect_probe.js | 8 ++++++++ test/parallel/test-debugger-probe-bound-never-hit.js | 2 +- .../test-debugger-probe-child-inspect-port-zero.js | 2 +- test/parallel/test-debugger-probe-explicit-column.js | 2 +- test/parallel/test-debugger-probe-expression-throws.js | 2 +- .../test-debugger-probe-failure-hang-during-evaluate.js | 2 +- test/parallel/test-debugger-probe-failure-process-exit.js | 2 +- test/parallel/test-debugger-probe-global-option-order.js | 2 +- test/parallel/test-debugger-probe-json-preview.js | 2 +- test/parallel/test-debugger-probe-json-special-values.js | 2 +- test/parallel/test-debugger-probe-json.js | 2 +- test/parallel/test-debugger-probe-late-resolution.js | 2 +- test/parallel/test-debugger-probe-launch.js | 2 +- test/parallel/test-debugger-probe-miss.js | 2 +- test/parallel/test-debugger-probe-missing-expr.js | 2 +- test/parallel/test-debugger-probe-multi-location.js | 2 +- test/parallel/test-debugger-probe-narrow-suffix.js | 2 +- test/parallel/test-debugger-probe-no-column-indent.js | 2 +- test/parallel/test-debugger-probe-requires-separator.js | 2 +- test/parallel/test-debugger-probe-script-throws.js | 2 +- test/parallel/test-debugger-probe-target-syntax-error.js | 2 +- test/parallel/test-debugger-probe-text-special-values.js | 2 +- test/parallel/test-debugger-probe-text.js | 2 +- test/parallel/test-debugger-probe-timeout.js | 2 +- 24 files changed, 31 insertions(+), 23 deletions(-) diff --git a/lib/internal/debugger/inspect_probe.js b/lib/internal/debugger/inspect_probe.js index fc9f3056f52341..608fe1ab668175 100644 --- a/lib/internal/debugger/inspect_probe.js +++ b/lib/internal/debugger/inspect_probe.js @@ -505,6 +505,7 @@ class ProbeInspectorSession { onChildOutput(text, which) { if (which !== 'stderr') { return; } + debug('child stderr: %j', text); this.childStderr += text; @@ -512,6 +513,7 @@ class ProbeInspectorSession { // Detect the disconnect sentinel. if (this.connected && StringPrototypeIncludes(combined, kProbeDisconnectSentinel)) { + debug('disconnect sentinel detected, resetting client'); this.disconnectRequested = true; this.client.reset(); } @@ -587,6 +589,7 @@ class ProbeInspectorSession { } onPaused(params) { + debug('paused: finished=%d, reason=%s hitBreakpoints=%j', this.finished, params.reason, params.hitBreakpoints); this.handlePaused(params).catch((error) => { if (error === kInspectorFailedSentinel) { return; } this.recordInspectorFailure({ @@ -837,6 +840,9 @@ class ProbeInspectorSession { } onScriptParsed(params) { + if (params.url && !StringPrototypeStartsWith(params.url, 'node:')) { + debug('scriptParsed: scriptId=%s url=%s, length=%d', params.scriptId, params.url, params.length); + } // This map grows by the number of scripts parsed, which is limited, and is just a // small string -> string map. The lifetime is bounded by probe timeout etc. so cleanup is overkill. this.scriptIdToUrl.set(params.scriptId, params.url); @@ -879,6 +885,8 @@ class ProbeInspectorSession { } const result = await this.callCdp('Debugger.setBreakpointByUrl', params); + debug('breakpoint set: id=%s urlRegex=%s locations=%j', + result.breakpointId, params.urlRegex, result.locations); this.breakpointDefinitions.set(result.breakpointId, { probeIndices }); } } diff --git a/test/parallel/test-debugger-probe-bound-never-hit.js b/test/parallel/test-debugger-probe-bound-never-hit.js index 2dc8b5a5e9d921..cc3ef278d27f92 100644 --- a/test/parallel/test-debugger-probe-bound-never-hit.js +++ b/test/parallel/test-debugger-probe-bound-never-hit.js @@ -16,7 +16,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe-bound-never-hit.js:4', '--expr', '1', 'probe-bound-never-hit.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-child-inspect-port-zero.js b/test/parallel/test-debugger-probe-child-inspect-port-zero.js index 468f7fdccba83a..5de3b78a104f3b 100644 --- a/test/parallel/test-debugger-probe-child-inspect-port-zero.js +++ b/test/parallel/test-debugger-probe-child-inspect-port-zero.js @@ -19,7 +19,7 @@ spawnSyncAndAssert(process.execPath, [ '--', '--inspect-port=0', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-explicit-column.js b/test/parallel/test-debugger-probe-explicit-column.js index ac65b572a37847..523777a8ad54fd 100644 --- a/test/parallel/test-debugger-probe-explicit-column.js +++ b/test/parallel/test-debugger-probe-explicit-column.js @@ -24,7 +24,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe-multi-statement.js:5:29', '--expr', 'acc.length', 'probe-multi-statement.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-expression-throws.js b/test/parallel/test-debugger-probe-expression-throws.js index a5447fe0a0f590..97c5e94d0485e2 100644 --- a/test/parallel/test-debugger-probe-expression-throws.js +++ b/test/parallel/test-debugger-probe-expression-throws.js @@ -23,7 +23,7 @@ spawnSyncAndExit(process.execPath, [ '--probe', `${fixture}:16`, '--expr', probes[0].expr, '--probe', `${fixture}:17`, '--expr', probes[1].expr, fixture, -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { status: 0, signal: null, stdout(output) { diff --git a/test/parallel/test-debugger-probe-failure-hang-during-evaluate.js b/test/parallel/test-debugger-probe-failure-hang-during-evaluate.js index 332b519d393fcd..82ff78ca6f78ad 100644 --- a/test/parallel/test-debugger-probe-failure-hang-during-evaluate.js +++ b/test/parallel/test-debugger-probe-failure-hang-during-evaluate.js @@ -24,7 +24,7 @@ spawnSyncAndExit(process.execPath, [ '--probe', `${fixture}:10`, '--expr', probes[0].expr, '--probe', `${fixture}:11`, '--expr', probes[1].expr, fixture, -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { status: 1, signal: null, stdout(output) { diff --git a/test/parallel/test-debugger-probe-failure-process-exit.js b/test/parallel/test-debugger-probe-failure-process-exit.js index 1e14c8b2b81842..f7c9d4abc92e5a 100644 --- a/test/parallel/test-debugger-probe-failure-process-exit.js +++ b/test/parallel/test-debugger-probe-failure-process-exit.js @@ -18,7 +18,7 @@ spawnSyncAndExit(process.execPath, [ 'inspect', '--json', '--probe', `${fixture}:8`, '--expr', probes[0].expr, fixture, -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { status: 1, signal: null, stdout(output) { diff --git a/test/parallel/test-debugger-probe-global-option-order.js b/test/parallel/test-debugger-probe-global-option-order.js index 33e9b688f2e0d8..35606e83cac4d2 100644 --- a/test/parallel/test-debugger-probe-global-option-order.js +++ b/test/parallel/test-debugger-probe-global-option-order.js @@ -17,7 +17,7 @@ spawnSyncAndAssert(process.execPath, [ '--expr', 'finalValue', '--json', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-json-preview.js b/test/parallel/test-debugger-probe-json-preview.js index acfd5bbbc7804b..96897400deecd8 100644 --- a/test/parallel/test-debugger-probe-json-preview.js +++ b/test/parallel/test-debugger-probe-json-preview.js @@ -24,7 +24,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', probeArg, '--expr', 'errorValue', 'probe-types.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-json-special-values.js b/test/parallel/test-debugger-probe-json-special-values.js index e24ea5b3080b8b..cd530bd8600b64 100644 --- a/test/parallel/test-debugger-probe-json-special-values.js +++ b/test/parallel/test-debugger-probe-json-special-values.js @@ -39,7 +39,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', probeArg, '--expr', 'errorValue', 'probe-types.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-json.js b/test/parallel/test-debugger-probe-json.js index 559392cc69d9b5..f0808d1f6259e5 100644 --- a/test/parallel/test-debugger-probe-json.js +++ b/test/parallel/test-debugger-probe-json.js @@ -23,7 +23,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe.js:12', '--expr', 'finalValue', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-late-resolution.js b/test/parallel/test-debugger-probe-late-resolution.js index 202019122c45b8..a66dd15a15f3ef 100644 --- a/test/parallel/test-debugger-probe-late-resolution.js +++ b/test/parallel/test-debugger-probe-late-resolution.js @@ -21,7 +21,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe-late-target.cjs:5', '--expr', 'value', 'probe-late-entry.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-launch.js b/test/parallel/test-debugger-probe-launch.js index 24b299ac227453..92a7a215941ac9 100644 --- a/test/parallel/test-debugger-probe-launch.js +++ b/test/parallel/test-debugger-probe-launch.js @@ -17,7 +17,7 @@ spawnSyncAndExit(process.execPath, [ '--', '--not-a-real-node-flag', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { signal: null, status: 1, stderr(output) { diff --git a/test/parallel/test-debugger-probe-miss.js b/test/parallel/test-debugger-probe-miss.js index 4fd4824ed0c1d3..99ccbd72a4d8aa 100644 --- a/test/parallel/test-debugger-probe-miss.js +++ b/test/parallel/test-debugger-probe-miss.js @@ -15,7 +15,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe-miss.js:99', '--expr', '42', 'probe-miss.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-missing-expr.js b/test/parallel/test-debugger-probe-missing-expr.js index 3011bc51f587e4..a653a86875b41e 100644 --- a/test/parallel/test-debugger-probe-missing-expr.js +++ b/test/parallel/test-debugger-probe-missing-expr.js @@ -13,7 +13,7 @@ spawnSyncAndExit(process.execPath, [ 'inspect', '--probe', 'probe.js:12', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { signal: null, status: 9, stderr: /Each --probe must be followed immediately by --expr/, diff --git a/test/parallel/test-debugger-probe-multi-location.js b/test/parallel/test-debugger-probe-multi-location.js index 15638f880ed421..88970aca1d53a8 100644 --- a/test/parallel/test-debugger-probe-multi-location.js +++ b/test/parallel/test-debugger-probe-multi-location.js @@ -19,7 +19,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'utils.js:5', '--expr', 'b', 'probe-multi-entry.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-narrow-suffix.js b/test/parallel/test-debugger-probe-narrow-suffix.js index 194ddfbdc5d4f7..423fc1c831c409 100644 --- a/test/parallel/test-debugger-probe-narrow-suffix.js +++ b/test/parallel/test-debugger-probe-narrow-suffix.js @@ -17,7 +17,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe-multi-a/utils.js:5', '--expr', 'b', 'probe-multi-entry.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-no-column-indent.js b/test/parallel/test-debugger-probe-no-column-indent.js index 351f1b89e79a3f..9f4d6c2bc74433 100644 --- a/test/parallel/test-debugger-probe-no-column-indent.js +++ b/test/parallel/test-debugger-probe-no-column-indent.js @@ -17,7 +17,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe-indented.js:6', // No `:col` '--expr', 'x', 'probe-indented.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeJson(output, { v: 2, diff --git a/test/parallel/test-debugger-probe-requires-separator.js b/test/parallel/test-debugger-probe-requires-separator.js index efc81fda4d69fd..533fe426cf2deb 100644 --- a/test/parallel/test-debugger-probe-requires-separator.js +++ b/test/parallel/test-debugger-probe-requires-separator.js @@ -15,7 +15,7 @@ spawnSyncAndExit(process.execPath, [ '--expr', 'finalValue', '--inspect-port=0', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { signal: null, status: 9, stderr: /Use -- before child Node\.js flags in probe mode/, diff --git a/test/parallel/test-debugger-probe-script-throws.js b/test/parallel/test-debugger-probe-script-throws.js index 0df67adb6a862a..f0ed99542a4d2f 100644 --- a/test/parallel/test-debugger-probe-script-throws.js +++ b/test/parallel/test-debugger-probe-script-throws.js @@ -33,7 +33,7 @@ spawnSyncAndExit(process.execPath, [ '--probe', `${fixture}:7`, '--expr', probes[0].expr, '--probe', `${fixture}:4`, '--expr', probes[1].expr, fixture, -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { // probe_target_exit: probing process exits 0 (hits trustworthy). status: 0, signal: null, diff --git a/test/parallel/test-debugger-probe-target-syntax-error.js b/test/parallel/test-debugger-probe-target-syntax-error.js index 905bcd0b6ce3e3..6b0280266649e0 100644 --- a/test/parallel/test-debugger-probe-target-syntax-error.js +++ b/test/parallel/test-debugger-probe-target-syntax-error.js @@ -27,7 +27,7 @@ spawnSyncAndExit(process.execPath, [ 'inspect', '--json', '--probe', `${fixture}:3`, '--expr', probes[0].expr, fixture, -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { // probe_target_exit: probing process exits 0. status: 0, signal: null, diff --git a/test/parallel/test-debugger-probe-text-special-values.js b/test/parallel/test-debugger-probe-text-special-values.js index ea62c45970a1e4..3a3b5a716f8243 100644 --- a/test/parallel/test-debugger-probe-text-special-values.js +++ b/test/parallel/test-debugger-probe-text-special-values.js @@ -36,7 +36,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', probeArg, '--expr', 'errorValue', 'probe-types.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeText(output, [ `Hit 1 at ${hitText}`, diff --git a/test/parallel/test-debugger-probe-text.js b/test/parallel/test-debugger-probe-text.js index f6752741a223d6..38810dfc7d27b7 100644 --- a/test/parallel/test-debugger-probe-text.js +++ b/test/parallel/test-debugger-probe-text.js @@ -15,7 +15,7 @@ spawnSyncAndAssert(process.execPath, [ '--probe', 'probe.js:12', '--expr', 'finalValue', 'probe.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { stdout(output) { assertProbeText(output, `Hit 1 at ${probeUrl}:12:1\n` + diff --git a/test/parallel/test-debugger-probe-timeout.js b/test/parallel/test-debugger-probe-timeout.js index de9309c3f60b94..291690b5fdd7a7 100644 --- a/test/parallel/test-debugger-probe-timeout.js +++ b/test/parallel/test-debugger-probe-timeout.js @@ -17,7 +17,7 @@ spawnSyncAndExit(process.execPath, [ '--probe', 'probe-timeout.js:99', '--expr', '1', 'probe-timeout.js', -], { cwd }, { +], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, { signal: null, status: 1, stdout(output) {