A NodeJS library providing a unified interface to common debuggers (gdb
, jdb
, pdb
, ...). It's meant for building developer tools (debug tools, IDEs, etc ...), built for Codebox
gdb
:c/c++
(and any native binaries really)jdb
:java
(and anything running on the JVM)pdb
:python
rdb
:ruby
- Feel free to send Pull Requests for more
Right now we interface with the current debugger through their command line programs and smartly writing and reading from their stdout
/stdin
.
bugs
is not yet published to npm
npm install bugs
var bugs = require('bugs');
// Use pdb to debug a python file
var dbg = bugs.pdb('./some_file.py');
// Debug "main" function
dbg.init()
.then(function() {
return dbg.break('main');
})
.then(function() {
// Run debugger
return dbg.run();
})
.then(function() {
// Get backtrace
return dbg.backtrace();
})
.then(function(trace) {
// Display trace & quit
console.log('trace =', trace)
return dbg.quit();
})
.done();
var bugs = require('bugs');
// Use gdb to unix "ls" binary
var dbg = bugs.gdb('ls');
// Debug "main" function
dbg.init()
.then(function() {
return dbg.break('main');
})
.then(function() {
// Run "ls" on a given folder
return dbg.run('-al /tmp');
})
.then(function() {
// Get backtrace
return dbg.backtrace();
})
.then(function(trace) {
// Display trace & quit
console.log('trace =', trace)
return dbg.quit();
})
.done();
Run file to debug with given args
Restart program
Quit current instance of the debugger (this isn't terribly useful)
Run until current method returns.
Execute and step into function
Execute current instruction
Keep running from here
Run to the next line of the current function
Move one level up in the stack trace
Move one level down in the stack trace
Evaluate a string of code
and print the result
Print backtrace of current stack
List source code of current location
Get local variables of current stack
Get global variables
Lists currently set breakpoints
Set a new breakpoint at location
(location
can be a line number, function address ...)
Clear breakproint for location
(see above for location
)
Alias to run
Alias to quit
Signals when the debugger is ready to receive commands.
.init()
resolves when started
is emitted (you should probably use that).
Provides updates when state of process changes. And updates not request or results of commands executed.