jdb-debugging

Installation
SKILL.md

JDB Debugging via tmux

Debug running JVM applications using jdb controlled through tmux panes.

Setup

With dedicated pane (preferred): User provides pane ID (e.g., %265)

tmux send-keys -t %265 "jdb -attach PORT" Enter
sleep 2
tmux capture-pane -t %265 -p

With new session:

tmux new-session -d -s jdb "jdb -attach PORT"
sleep 2
tmux capture-pane -t jdb -p

Commands

All commands follow this pattern:

tmux send-keys -t PANE "COMMAND" Enter
sleep 0.5
tmux capture-pane -t PANE -p

Breakpoints

# Simple method (non-overloaded)
stop in com.example.MyClass.myMethod

# Overloaded method - first list methods to find signature
methods com.example.MyClass
# Then use exact signature
stop in com.example.MyClass.execute(java.lang.Object)

# Line breakpoint (often fails with Scala due to line mismatch)
stop at com.example.MyClass:42

Navigation

Command Action
cont Continue execution
step Step into
next Step over
step up Step out of current method

Inspection

Command Action
where Stack trace
locals Local variables
print varName Print variable value
print obj.field Print object field
threads List all threads
thread THREAD_ID Switch to thread

Breakpoint Management

Command Action
clear List breakpoints
clear com.example.MyClass.myMethod Remove breakpoint

Scala/Kotlin Notes

  • Line breakpoints often fail - use method breakpoints instead
  • For overloaded methods, use methods ClassName to find exact JVM signature
  • list command typically fails (source not found) but inspection commands work fine

Cleanup

# Session approach
tmux kill-session -t jdb

# Pane approach - just exit jdb
tmux send-keys -t %265 "quit" Enter
Related skills

More from markus1189/nixos-config

Installs
1
GitHub Stars
5
First Seen
Mar 29, 2026