node-minidump-stackwalk
Version:
Node.js wrapper for Breakpad's minidump-stackwalk
50 lines (49 loc) • 2.02 kB
JavaScript
;
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));
}