我可以为JDB编写脚本 - java调试器

时间:2011-12-11 20:06:33

标签: java debugging scripting jdb

我正在使用JDB来远程调试程序。我可以在JDB中编写脚本,以便我可以编写循环和if-else条件来控制JDB的执行方式并将jdb输出记录到文件中。

我的参考文件是GDB Scripting

2 个答案:

答案 0 :(得分:3)

查看jdiscript;它是Java Debug Interface的精简脚本前端,可以与Java,JRuby或任何其他jvm语言一起使用。

答案 1 :(得分:2)

使用expect,例如,我使用Cygwin jdb中的本机Windows expect

#!/usr/bin/expect

set timeout -1

set CP "oracle-jdbc-tz-1.0.0-RELEASE.jar;C:\\Users\\user\\.m2\\repository\\com\\oracle\\jdbc\\ojdbc6\\11.2.0.4\\ojdbc6-11.2.0.4.jar"

cd target
# puts [pwd]

spawn jdb -classpath $CP -sourcepath ../src/main/java
expect ">"

send "stop in home.App.main\n"
expect ">"

send "run home.App\n"
expect "Breakpoint hit:"

send "stop in home.App.run\n"
expect -re "main... "
send "cont\n"
expect -re "main... "
send "stop in home.App.barrier\n"
expect -re "main... "
send "trace go methods\n"
expect -re "main... "
send "cont\n"
expect -re "main... "
# interact
send "quit\n"
expect eof

要获取运行Maven项目的类路径:

mvn dependency:build-classpath