resolve-jit-symbols
Resolves symbols for dynamic code generated by a JIT via a map file.
var resolveJITSymbols = require('resolve-jit-symbols');
var map = fs.readFileSync(__dirname + '/test/fixtures/jit.map', 'utf8')
var resolver = resolveJITSymbols(map);
var res = resolver.resolve('0x38852ffd485a');
console.log(res);
{ address : '38852ffd4640',
size : '54c',
decimalAddress : 62144686933568,
symbol : 'LazyCompile : *go' }
Command Line
cat test/fixtures/callgraph.csv | rjs test/fixtures/jit.map
Installation
npm install resolve-jit-symbols
Usage
# Supply path to map file
cat callstack.csv | rjs /tmp/<perf-*.map>
# Or pid of process whose map file to use (resolved from /tmp/perf-<pid>.map)
cat callstack.csv | rjs <pid>
How to Generate JIT Symbol Files
Any tool that can generate the format described
here will work.
With Node.js >=v0.11.15
do the following:
node --perf-basic-prof your-app.js
This will create a map file at /tmp/perf-<pid>.map
.
API
-
JITResolver::hexAddressRegex
-
RegExp used to match memory addresses.
- Source:
-
JITResolver::lldb_backtraceRegex
-
RegExp used to match memory lldb backtraces of the form #1 0x001 in 0x001 ()
When calling var m = s.match(regex)
m[1]
contains first matched address and m[2]
contains second matched address.
- Source:
-
JITResolver(map) → {Object}
-
Instantiates a JIT resolver for the given map.
Parameters:
Name | Type | Description |
---|
map |
String
|
Array.<String>
| either a string or lines with space separated HexAddress, Size, Symbol on each line |
- Source:
Returns:
the initialized JIT resolver
-
Type
-
Object
-
JITResolver::resolve(hexAddress) → {Object}
-
Matches the address of the symbol of which the given address is part of.
Parameters:
Name | Type | Description |
---|
hexAddress |
String
|
Number
| the hexadecimal address of the address to check |
- Source:
Returns:
info of the matching symbol which includes address, size, symbol
-
Type
-
Object
-
JITResolver::resolveMulti(stack, getHexAddress) → {Array.<String>|String}
-
Resolves all symbols in a given stack and replaces them accordingly
Parameters:
Name | Type | Argument | Description |
---|
stack |
Array.<String>
|
String
|
| string of stack or lines of stack |
getHexAddress |
function
|
<optional>
| allows overriding the function used to find a hex address on each line, returns { address: 0x000, include: true|false } |
- Source:
Returns:
the stack with symbols resolved in the same format that the stack was given, either as lines or one string
-
Type
-
Array.<String>
|
String
generated with docme
License
MIT