diff options
author | cjihrig <cjihrig@gmail.com> | 2019-04-08 10:20:26 -0400 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2019-04-12 17:16:46 -0400 |
commit | 9b6b567bc4dd8f40bad12528eebf12dac8a8027f (patch) | |
tree | 7e2b9264a4d45f26091f92c099065320abd47f75 /lib/internal/bootstrap/pre_execution.js | |
parent | 8cf3af14864ac1bee4b3145bec8a8cf3e38edc55 (diff) | |
download | android-node-v8-9b6b567bc4dd8f40bad12528eebf12dac8a8027f.tar.gz android-node-v8-9b6b567bc4dd8f40bad12528eebf12dac8a8027f.tar.bz2 android-node-v8-9b6b567bc4dd8f40bad12528eebf12dac8a8027f.zip |
lib,src,doc: add --heapsnapshot-signal CLI flag
This flag allows heap snapshots to be captured without
modifying application code.
PR-URL: https://github.com/nodejs/node/pull/27133
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'lib/internal/bootstrap/pre_execution.js')
-rw-r--r-- | lib/internal/bootstrap/pre_execution.js | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index e2b1103f8c..6b1e3fb213 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -29,6 +29,8 @@ function prepareMainThreadExecution(expandArgv1 = false) { initializeReport(); initializeReportSignalHandlers(); // Main-thread-only. + initializeHeapSnapshotSignalHandlers(); + // If the process is spawned with env NODE_CHANNEL_FD, it's probably // spawned by our child_process module, then initialize IPC. // This attaches some internal event listeners and creates: @@ -166,6 +168,20 @@ function initializeReportSignalHandlers() { addSignalHandler(); } +function initializeHeapSnapshotSignalHandlers() { + const signal = getOptionValue('--heapsnapshot-signal'); + + if (!signal) + return; + + require('internal/validators').validateSignalName(signal); + const { writeHeapSnapshot } = require('v8'); + + process.on(signal, () => { + writeHeapSnapshot(); + }); +} + function setupTraceCategoryState() { const { isTraceCategoryEnabled } = internalBinding('trace_events'); const { toggleTraceCategoryState } = require('internal/process/per_thread'); |