通常我在终端中按类型jdb
开始调试java程序,然后它会进入调试模式,然后我可以输入类似“停在com.android.contacts.dirtyImport.DirtyImportManager:95”的内容来告诉jdb停在某一行。
现在问题是:如何将这两个cmds输入组合起来。像“jdb<停在com.android.contacts.dirtyImport.DirtyImportManager:95”之类的东西。我有这个要求的原因是我想让vim自动生成调试信息并进入调试模式,停止make breakpoint。
答案 0 :(得分:3)
一个选项是在标准输入前加一行:
{ echo "stop at com.android.contacts.dirtyImport.DirtyImportManager:95"; cat; } | jdb
这将启动一个子shell({}
),它首先使用echo
打印给定行,然后读取标准输入并将读取行打印到标准输出(cat
)。整个输入通过管道传输到jdb。
但是,这会混淆一些区分终端输入和管道输入的程序。在这种情况下,您需要查看程序的引用,因为调试器通常支持从文件执行命令(gdb
与-x
)。
答案 1 :(得分:0)
我不确定,但您可能会考虑生成expect
脚本。 Here is a tutorial,它与gdb
自动化有关。