Project64 Debugger
Github - Discussion - Javascript API
MIPS CPU Debugger

Symbol Manager
The symbol manager can keep track of discovered functions and monitor variables in real time.
Symbols are saved to a file in the Save directory, so you won't lose them at the end of your debugging session.

Cartridge DMA Logging
The DMA log can be used to quickly trace data back to ROM.

Updated memory editor
The updated memory editor incorporates DMA log and symbol information, and can be used to place read and write breakpoints.

Javascript API
PJ64d features a Javascript API that can hook CPU read/write/execute events, access virtual memory, and connect to external applications via sockets.
In settings, Pause emulation when window is not active and Hide advanced settings should be unchecked.
In advanced settings, Always use interpreter core and Enable debugger should be checked.
Bug reports, questions, suggestions?
Feel free to post them in the support thread!
Plans & Development status
2017 Jun 12


Debugger: Add tooltips for bitfield registers
Debugger: Add additional 'View memory' button for load/stores
Debugger: Highlight addresses with script callbacks
Debugger: Make scrollbar thumb functional
Memory Dumper: Include symbols in ASM dumps
Memory Viewer: Improve caret behavior
Memory Viewer: Support pasting
Memory Viewer: Add 'Fill bytes'
Memory Viewer: Add 'Inject file here'
Memory Viewer: Add 'Copy' to context menu (Selected bytes, Address, DMA base address, )
Memory Viewer: Add 'Follow' to context menu
Memory Viewer: Highlight addresses with script callbacks
Memory Viewer: Integrate TLB information
Memory Viewer: Add history, back and forward buttons
Script API: Add events.onjal(func)
Script API: Add mem.setstring(address, string)
Script API: Add mem.setblock(address, buf)
Script API: Add constants for mapped registers
Script Console: Fix instability when stopping scripts
Script Console: Fix input/eval instability
Script Console: Show number of waiting events in status bar
Symbols: Add ELF symbol generation feature
Symbols: Add 'Set value' to context menu for variables
Symbols: Support editing for existing symbols
Symbols: Implement filtering
Symbols: Fix crash from clicking '-' when nothing is selected
Symbols: Fix crash from invalid addresses

Add call log window
 + Show list of all function calls with occurence
 + Show the last bunch of function calls and args

Other thoughts:
 Debugger: Make branch arrow dotted if branch will be taken
 Stack Viewer: Add some sort of variable tracking/analysis
 arrays & sizes for symbols, structs too?
 full execution logging
 builtin http/websocket stuff for scripts
 scripts should have a library folder and require() implementation
 should probably make mem.bindvar types uppercase
 ('float' and 'double' are reserved keywords)
 mem.typedef and mem.bindstruct should have a way to deal with unknown struct offsets
 should add a built-in printf implementation and ditch Number.prototype.hex
 need to figure out how to make screen.print not terrible
 should add events.onclick to capture clicks to the emu screen
 need to make documentation maintenence easier (markdown/json/something)
 fix windows XP incompatibility (*Ex functions in the script system)
 use thread pools? use libuv/dukluv?
 object oriented gui for scripts
 tutorials & gui documentation