3

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

我的参考文档是GDB Scripting

4

2 回答 2

4

查看jdiscript它是用于Java 调试接口的精简脚本前端,可与 Java、JRuby 或任何其他 jvm 语言一起使用。

于 2014-04-13T18:50:26.310 回答
3

使用expect,例如我使用jdb来自 Cygwin的本机 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
于 2018-07-01T22:08:41.140 回答