summaryrefslogtreecommitdiff
path: root/lib/internal/bootstrap/pre_execution.js
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-04-08 10:20:26 -0400
committercjihrig <cjihrig@gmail.com>2019-04-12 17:16:46 -0400
commit9b6b567bc4dd8f40bad12528eebf12dac8a8027f (patch)
tree7e2b9264a4d45f26091f92c099065320abd47f75 /lib/internal/bootstrap/pre_execution.js
parent8cf3af14864ac1bee4b3145bec8a8cf3e38edc55 (diff)
downloadandroid-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.js16
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');