java项目中如何打断点测试

java项目中如何打断点测试,第1张

现在一般IDE都支持打断点运行debug模式进行调试。比如:

eclipse 在需要断点的地方双击鼠标左键,然后以debug模式运行就会在此处断点。

java自身提供的工具是jdb 使用jdb运行class文件

jdb Test

>stop in Test.main

>run

>step

上面的例子是在Test的main方法设置断点,运行程序,然后单步调试。

具体可参见官方的文档或进入jdb命令行后输入问号查看帮助。

作者:RednaxelaFX

链接:https://www.zhihu.com/question/36051329/answer/65735192

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

例如这个?Bytecode Visualizer不过题主想要的功能多半还得在上面这个工具的基础之上再扩展一下。我自己做字节码层面调试的时候通常就直接用JDK自带的jdb命令行调试器,支持字节码层面调试,不过用起来当然没有带GUI的工具那么直观咯。之前写的一篇博文里有用jdb举过例子:借HSDB来探索HotSpot VM的运行时数据。虽然那篇没有提到,但其实用 stepi 和 nexti 命令就可以在jdb里做字节码层面的单步调试(普通的基于代码行的单步调试命令则是 step 和 next,少个i后缀)。jdb的字节码层面调试最让人不爽的一点就是它不能在任意字节码指令上设断点。我以前用jdb都是只能设方法入口断点然后不断的 stepi 单步走到我要的指令上。这对稍微复杂一点的调试工作来说就极其纱布。jdb间接基于JVMTI实现,而JVMTI的SetBreakpoint函数其实是可以在任意字节码指令上设断点的,只要GetJLocationFormat返回1(JVMTI_JLOCATION_JVMBCI)。jdb直接基于的是JVMTI之上的Java层包装,JDI。它的本体入口在这里:jdk7u/jdk7u/jdk: e228aaace9c9 src/share/classes/com/sun/tools/example/debug/tty/TTY.java而断点相关的部分在这里:jdk7u/jdk7u/jdk: e228aaace9c9 src/share/classes/com/sun/tools/example/debug/tty/BreakpointSpec.java鼓捣鼓捣这里就能让它支持字节码指令层面(BCI,bytecode index)的断点…

Java调度器为Java程序提供了一个命令行调试环境 它既可在本地 也可在与远程的解释器的一次对话中执行 jdb于本地机器中可用如下的命令启动 C:\>jdb classname 当你使用 debug选项开始一个Java例程时 必须提供给Jdb 一个密码 这样 Jdb才能开始运转起来 下表包含了所有jdb命令 选项 功能 catch calssID 为特定异常出口而中断 classes 列出当前已知的类 clear classID:line 清除一个断点 cont 从断点处继续执行 down[n frames] 下移一个线程的堆栈 dump ID[ID ] 显示所有对象信息 exit(或quit) 退出调试器 help(或?)  列出所有命令 ignore classID 忽略特定的异常出口 list[line number] 显示源代码 load clas *** ame 载入要调试的Java类 locals 在当前堆栈帧中显示所有局部变量 memory 报告内存使用情况 methods classID 列出一个类的成员函数集 print ID[ID ] 列出对象或域 resume [threadID ] 恢复线程(默认情况恢复所有线程) run class [args] 开始执行已下载的Java类 step 执行当前行 stop in classID:method 在一成员函数中设一断点 stop at classID:line 在一行设一断点 suspend[threadID ] 停止一个线程(默认情况停止所有线程) hreads threadgroup 列出线程 thread threadID 设置当前线程 threadgroups 列出线程组 threadgroup name 设置当前线程组 up [n frames] 上移一个线程堆栈 use [path] 显示或改变源程序路径 where [threadID] or all 使一线程的堆线置空 !! 重复上一次命令 host hostname 该命令告诉Jdb到哪里去建立远程运行的Java解释器对话过程 password password 本选项告诉Jdb 用哪个密码去与远程运行的Java 对话进程相连接 密码 password是由运行带有 debug选项的Java解释器所提供的 lishixinzhi/Article/program/Java/JSP/201311/19242


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11320233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存