1.debugԴ?码对?Բ???
2.idea debug进入HashMap源码时传参不正确?
debugԴ??Բ???
我们先来看下面这段代码?你觉得会有什么问题吗?
上面代码的运行结果如下图所示,与你预想的不上结果一样吗?
很明显,上面的码对代码有问题!那该怎么解决呢?我们可以使用debug功能来进行调试。不上
1. Debug模式
debug是码对供程序员使用的程序调试工具,它可以用域查看程序的不上病房查询系统源码执行流程,也可以用域追踪程序执行过程来调试程序。码对
2. debug调试面板介绍
接下来我就给大家解释一下debug调试面板的不上功能:
①==>重新运行程序,会关闭服务后重新启动程序; ②==>更新程序,码对一般在你的不上代码有改动后可执行这个功能; ③==> 关闭程序; ④==> 查看所有的断点; ⑤==> 哑的断点,选择这个后,码对所有断点变为灰色,不上断点失效; ⑥==> 步过,码对一行一行地往下走,不上如果这一行上有方法不会进入方法; ⑦==>步入,码对银行转账生成源码如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法; ⑧==>强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法; ⑨==>步出,从步入的招生统计php源码方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值; ⑩==>行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
3. Debug调试步骤
了解了这些基本的juc源码是什么功能之后,我们再来看看debug的调试步骤:
3.1 如何加断点
选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。
3.2 运行加了断点的程序
在代码区域直接右键Debug执行。
3.3 如何查看调试结果
我们可以通过查看Debugger窗口和Console窗口来查看调试结果。
3.4 解决问题
通过观察程序的执行以及变量值的改变,可以发现循环变量没有发生改变 ,所有使用debug很快就可以查找到错误。快讯小程序源码
3.5 解决后的代码
现在我们就把debug模式的使用给大家介绍完了,最后总结如下:
A. 条件断点:在有逻辑条件判断处设置断点 例如:多分支if swicth...; B. 变量断点:在关键的变量上设置断点 观察变量的值的变化; C. 方法断点:在方法的入口处设置断点 可以观察方法的执行的结果以及流程; D. 异常断点:就是在发生异常的地方设置断点 确定异常发生的情况。
现在你学会怎么使用debug了吗?可以在评论区留言,说出你的问题,我来给你解决。
idea debug进入HashMap源码时传参不正确?
我测试了下面的代码:分别在这四个位置打了断点以监控程序的运行情况,debug后,进入第一次断点的位置为:
与题主说的情况一致,而没有进入我的第一个断点进行输出,而后F9:
发现还是在put文件,经多次F9之后,可以看出来,其实java的jvm在启动的时候,在底层也自行调用的put方法,将jvm所需要的一些动态库、jar包put到某个map之中,具体是哪个map看不出来。要等到jvm底层将所有东西准备好后,才进行main函数。
jvm准备需要put多少次我就不数了,现在我先把put的断点取消,让程序debug到我的第一个断点处:
这个时候将put方法打上断点,F9发现:
奇怪的key值增加了,它将我的classes编译目录丢进去了,继续F9,和上一步差不多,再再次F9,终于来了:
继续F9,终于到达了我的第二个断点:
继续F9,这次没有put奇怪的东西了:
继续:
最后:
然后程序退出:
综上,jvm在启动的时候会在程序背后隐式地将一些配置啊什么的通过put方法放到某些地方,不用关心,你遇到的情况是正常的也是正确的