使用jdb调试Java应用时,能否设置带预定义动作的断点?
在jdb中设置带预定义动作的断点
当然可以!jdb本身就支持配置带自动执行动作的断点,完全不需要依赖expect这类外部工具,正好适配你这种没法用IDE调试、也不能随意修改代码加日志的场景。
实现你需求的具体步骤很简单:
第一步:创建一个文本文件,把你想自动执行的jdb命令写进去,每行一个命令。比如我们创建
breakpoint-actions.txt,内容如下:print myVal cont这里的
print myVal是打印目标变量,cont是让程序继续运行,正好对应你手动执行的三个步骤里的后两个。第二步:在jdb中设置断点时,通过
-commands参数关联这个命令文件:stop at MyClass:10 -commands breakpoint-actions.txt
这样配置之后,每当程序运行到MyClass第10行的断点时,jdb就会自动执行命令文件里的所有操作——先打印myVal的值,然后自动让程序继续运行,完全不用你手动依次输入命令。
额外补充几个实用细节:
- 命令文件里可以放任意合法的jdb命令,不止局限于打印和继续,比如你还可以加
dump查看对象详情,或者eval执行表达式 - 不同的断点可以关联不同的命令文件,按需配置非常灵活
- 这个功能是jdb原生支持的,不需要额外安装任何工具,在本地客户环境里直接就能用
内容的提问来源于stack exchange,提问作者Gautam
相关产品推荐
相关产品推荐

