UNPKG

node-minidump-stackwalk

Version:
50 lines (49 loc) 2.02 kB
#! /usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const minidump_stackwalk_1 = require("../src/minidump-stackwalk"); const fs_1 = __importDefault(require("fs")); const { argv } = process; const availablePlatforms = Object.keys(minidump_stackwalk_1.Platform).join(', '); const minidumpFilePath = argv.find(arg => arg.endsWith('.dmp')); const minidumpIndex = argv.indexOf(minidumpFilePath); const symbolPaths = argv.slice(minidumpIndex + 1, argv.length); const platformIndex = argv.indexOf('-p') + 1; const platform = argv.at(platformIndex) || minidump_stackwalk_1.Platform.bullseye; const verbose = argv.includes('-v'); if (!minidumpFilePath) { logErrorAndExit(`Please specify a minidump file`); } if (!fs_1.default.existsSync(minidumpFilePath)) { logErrorAndExit(`File doesn't exist at path ${minidumpFilePath}`); } if (!symbolPaths.length) { logErrorAndExit(`Please specify at least one symbol path`); } if (!validPlatform(platform)) { logErrorAndExit(`Please specify a platform, valid platforms: ${availablePlatforms}`); } (async () => { const options = { machineReadable: argv.includes('-m'), stackContents: argv.includes('-s'), dumpingThreadOnly: argv.includes('-c'), threadBrief: argv.includes('-b'), }; const { stdout, stderr } = await (0, minidump_stackwalk_1.minidumpStackwalk)(minidumpFilePath, symbolPaths, platform, options); console.log(stdout); if (verbose) { console.error(stderr); } })(); function logErrorAndExit(message) { console.error(message); console.log('Usage: node-minidump-stackwalk <minidump-file-path> <symbol-paths> [-p <platform>] [-m] [-s] [-c] [-b] [-v]'); process.exit(-1); } function validPlatform(platform) { return Boolean(platform && Object.keys(minidump_stackwalk_1.Platform).includes(platform)); }