返回 Skill 列表
extension
分类: 开发与工程无需 API Key

jdb-debugging

通过tmux使用jdb调试本地JVM应用程序。当用户要求调试正在运行的Java/Scala/Kotlin应用程序、连接到调试端口、设置断点、逐行执行代码或检查变量时使用。

person作者: jakexiaohubgithub

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