ztrace
Version:
strace for node
72 lines (49 loc) • 2.38 kB
Markdown
ztrace
======
[](https://npmjs.org/package/ztrace)
[](https://travis-ci.org/addaleax/ztrace?branch=master)
[](https://coveralls.io/r/addaleax/ztrace?branch=master)
Trace what your program does, inspired by `strace(1)`.
Install:
`[sudo] npm install -g ztrace`
Usage:
`test.js`:
```js
const fs = require('fs');
fs.statSync('/');
```
Look at the `fs.stat` call in action:
```sh
$ ztrace -e fs.stat* -s unlimited ./test.js
fs.statSync('/')
@fs.stat('/') = { dev: 2049, mode: 16877, nlink: 25, uid: 0, gid: 0, rdev: 0, blksize: 4096, ino: 2, size: 4096, blocks: 8, atime: 2016-10-31T08:45:52.988Z, mtime: 2016-10-23T16:04:32.775Z, ctime: 2016-10-23T16:04:32.775Z, birthtime: 2016-10-23T16:04:32.775Z }
-> { dev: 2049, mode: 16877, nlink: 25, uid: 0, gid: 0, rdev: 0, blksize: 4096, ino: 2, size: 4096, blocks: 8, atime: 2016-10-31T08:45:52.988Z, mtime: 2016-10-23T16:04:32.775Z, ctime: 2016-10-23T16:04:32.775Z, birthtime: 2016-10-23T16:04:32.775Z }
```
(`@fs.stat` is the call to the C++ layer itself.)
If you want to trace everything, you can do that using just `ztrace ./test.js`
– but be warned: This is still *very* slow.
There are shortcuts for programatically tracing interactions single objects
to stderr:
```js
const ztrace = require('ztrace');
// Displays results of this call to stderr.
ztrace(fs).statSync('.');
// Output:
// ~.statSync('.') = { dev: 44, mode: 16893, nlink:....377Z }
```
License
=======
<details>
<summary>GPL-3.0+, at least for now.</summary>
Copyright (C) 2016 Anna Henningsen
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
</details>