@licq/nwjs-minidump

2.0.3 • Public • Published

@licq/nwjs-minidump

decode a nwjs crashed dump file

NPM version NPM downloads

Install

npm add @licq/nwjs-minidump

Usage

const minidump = require("@licq/nwjs-minidump");

const testCases = [
  ["./dump-examples/0.57.1-osx64.dmp", "0.57.1-sdk"],
  ["./dump-examples/0.57.1-win64.dmp", "0.57.1-sdk"],
  ["./dump-examples/0.54.1-arm64.dmp", "0.54.1-sdk"],
];

getSymbols

(async function () {
  await minidump.getSymbols({
    dumpFile: testCases[0][0],
    nwVersion: testCases[0][1],
  });
})();

decodeDmp

(async function () {
  const res = await main.decodeDmp({
    dumpFile: testCases[0][0],
    nwVersion: testCases[0][1],
    symbolsPath: 'path/to/symbols', // optional
    tagetDumpTxtPath: 'path/to/dumpTxt' // optional
  });
  console.log(res);
})();

CLI

  • dmp -f [dumpFilePath] -v [nwjsVersion] -o [outputPath] -s [symbolsPath]

    • -f required
    • -v required
    • -o optional
  • help

$ dmp -h
Usage: dmp [options] [command]

Options:
  -V, --version     output the version number
  -h, --help        display help for command

Commands:
  decode [options]  decode a nwjs dump file
  help [command]    display help for command

$ dmp decode -h
Usage: dmp decode [options]

decode a nwjs dump file

Options:
  -f, --dumpFile <path>     path of the .dmp file, eg: /path/to/demo.dmp or https://cos.xxx.com/path/to/demo.dmp
  -v, --nwVersion <semver>  nwjs version eg: 0.57.1|0.57.1-sdk. see <https://dl.nwjs.io/>
  -s, --symbolsPath <path>  path of the symbols. If this parameter is not specified, it will be downloaded by default
  -o, --output <path>       path of the output. The default value is the same as the .dmp file
  -h, --help                display help for command
  • example
$ npm i -g @licq/nwjs-minidump
$ dmp decode -f path/to/xxx.dmp -v 0.57.1 # support url: dmp decode -f https://miniapp.gtimg.cn/qqdevtools/crash_dump_files/cc25ec86-5346-4a4d-b442-74a3de9fd4ee.dmp -v 0.57.1-sdk

# output example:

Operating system: Mac OS X
                  12.3.1 21E258
CPU: amd64
     family 6 model 165 stepping 5
     16 CPUs

GPU: UNKNOWN

Crash reason:  EXC_BAD_ACCESS / KERN_INVALID_ADDRESS
Crash address: 0x0
Process uptime: 1063 seconds

Thread 0 (crashed)
 0  nwjs Framework!GetRenderWidgetHost [render_frame_host_impl.cc : 10935 + 0x0]
    rax = 0x0000000119b067a8   rdx = 0x00000000000c81b0
    rcx = 0x00000000430254d1   rbx = 0x00007fe040073e00
    rsi = 0x00007fdfeeff84b8   rdi = 0x0000000000000000
    rbp = 0x00007ff7bf664f40   rsp = 0x00007ff7bf664f30
     r8 = 0x0000000000000427    r9 = 0x0000000000000029
    r10 = 0x00007fdfcff00000   r11 = 0x0000000000000000
    r12 = 0x00007fdfcf16e720   r13 = 0x00007fe040880438
    r14 = 0x0000000000000000   r15 = 0x00007ff7bf664f78
    rip = 0x0000000110d288e7
    Found by: given as instruction pointer in context
 1  nwjs Framework!GetView [render_frame_host_impl.cc : 4171 + 0x9]
    rbp = 0x00007ff7bf664f50   rsp = 0x00007ff7bf664f50
    rip = 0x0000000110d2894d
    Found by: previous frame's frame pointer

References

Note

On linux system, May report this error:

libstdc++.so.6: version `GLIBCXX_3.4.20’ not found

Solution

# find / -name "libstdc++.so.6*"

wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
cp libstdc.so_.6.0.26 /usr/lib64
cd /usr/lib64
rm -f libstdc.so_.6
ln -f libstdc.so_.6.0.26 libstdc.so_.6

Verify

strings libstdc++.so.6.0 | grep GLIBCXX_*

/@licq/nwjs-minidump/

    Package Sidebar

    Install

    npm i @licq/nwjs-minidump

    Weekly Downloads

    1

    Version

    2.0.3

    License

    MIT

    Unpacked Size

    22.6 kB

    Total Files

    5

    Last publish

    Collaborators

    • uv-w