cli: add --heap-prof flag available to NODE_OPTIONS

Fixes: https://github.com/nodejs/node/issues/54257
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/54259
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
This commit is contained in:
Juan José 2024-10-19 21:17:22 -05:00 committed by GitHub
parent 61e52c8bd3
commit 78b72ca7ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 4 deletions

View File

@ -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`

View File

@ -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))",

View File

@ -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,