Skip to content

Commit

Permalink
cli: add --heap-prof flag available to NODE_OPTIONS
Browse files Browse the repository at this point in the history
Fixes: nodejs#54257
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
PR-URL: nodejs#54259
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
  • Loading branch information
juanarbol authored and tpoisseau committed Nov 21, 2024
1 parent fc8f641 commit bec33eb
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
4 changes: 4 additions & 0 deletions doc/api/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -3076,6 +3076,10 @@ one is included in the list below.
* `--force-fips`
* `--force-node-api-uncaught-exceptions-policy`
* `--frozen-intrinsics`
* `--heap-prof-dir`
* `--heap-prof-interval`
* `--heap-prof-name`
* `--heap-prof`
* `--heapsnapshot-near-heap-limit`
* `--heapsnapshot-signal`
* `--http-parser`
Expand Down
12 changes: 8 additions & 4 deletions src/node_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -617,19 +617,23 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
"Start the V8 heap profiler on start up, and write the heap profile "
"to disk before exit. If --heap-prof-dir is not specified, write "
"the profile to the current working directory.",
&EnvironmentOptions::heap_prof);
&EnvironmentOptions::heap_prof,
kAllowedInEnvvar);
AddOption("--heap-prof-name",
"specified file name of the V8 heap profile generated with "
"--heap-prof",
&EnvironmentOptions::heap_prof_name);
&EnvironmentOptions::heap_prof_name,
kAllowedInEnvvar);
AddOption("--heap-prof-dir",
"Directory where the V8 heap profiles generated by --heap-prof "
"will be placed.",
&EnvironmentOptions::heap_prof_dir);
&EnvironmentOptions::heap_prof_dir,
kAllowedInEnvvar);
AddOption("--heap-prof-interval",
"specified sampling interval in bytes for the V8 heap "
"profile generated with --heap-prof. (default: 512 * 1024)",
&EnvironmentOptions::heap_prof_interval);
&EnvironmentOptions::heap_prof_interval,
kAllowedInEnvvar);
#endif // HAVE_INSPECTOR
AddOption("--max-http-header-size",
"set the maximum size of HTTP headers (default: 16384 (16KB))",
Expand Down
12 changes: 12 additions & 0 deletions test/parallel/test-process-env-allowed-flags-are-documented.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,18 @@ const difference = (setA, setB) => {
return new Set([...setA].filter((x) => !setB.has(x)));
};

// Remove heap prof options if the inspector is not enabled.
// NOTE: this is for ubuntuXXXX_sharedlibs_withoutssl_x64, no SSL, no inspector
// Refs: https://github.com/nodejs/node/pull/54259#issuecomment-2308256647
if (!process.features.inspector) {
[
'--heap-prof-dir',
'--heap-prof-interval',
'--heap-prof-name',
'--heap-prof',
].forEach((opt) => documented.delete(opt));
}

const overdocumented = difference(documented,
process.allowedNodeEnvironmentFlags);
assert.strictEqual(overdocumented.size, 0,
Expand Down

0 comments on commit bec33eb

Please sign in to comment.