[讨论] JVM变量的变量调试问题。
xgj1988
2011-04-26
刚才在和 RednaxelaFX , IcyFenix 讨论的帖子中设计到调试问题
http://hllvm.group.iteye.com/group/topic/25798 于是我就在自己机子上面捣腾,搞了半天发现另外个问题。 是这样的,我们知道eclipse可以调试变量,方法就是在变量前面加断点,然后我们右键断点 在弹出的菜单中,选择breakpoint properties ,然后在Hit Count 设置 成10 。也就是运行多少次停止(被使用多少次断点就停止)。 public class Test { private static int fn_count = 0; public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.println(i); fn_count = i; // System.out.println(fn_count); // fn(); } } public static void fn() { fn_count = fn_count + 1; System.out.println(fn_count); } } 本来我的想法是,应该在 i=9的时候就要停止,因为初始化的时候1次,然后循环9次后就应该停止了。因为这个时候fn_count 正好被执行第10次,满足hit count 10 ,所以应该停止,但是 如果是执行 fn_count = i; 9次,那么和我想法一样, 但如果执行 System.out.println(fn_count ); 则在i=10的时候才停止断点,也就是hit count 11次的时候,因为初始化一次。我测fn方法也是第一种情况。对于第二种情况为什么会这样在hit 11次的时候才断下来实在不懂。 下面是图,大家看看 |
|
william_ai
2011-04-26
能不能把watchpoints的properties贴出来,估计是Modification和Access全开了。
赋值即putstatic看做是一次Modification。这个和你的理解是一致的,就是那个初始化的时候做了一次putstatic,然后main里面执行了9次得putstatic。 而getstatic看做是一次Access,所以就有10次了。 场景一:fn_count=i; 这个时候满足条件Modification 场景二:System.out.println(fn_count); 这个时候满足条件Access PS:在Modification和Access全开的场景下,其实这个hit count是各算各的,就是Modification和Access分别有自己的hit count。其中一个的hit count达到阀值10时,触发 suspend。而不是Modification's hit count + Access hit count == 10时触发suspend。 |
|
xgj1988
2011-04-27
额。。谢谢。。果然全开了。哈哈
|
相关讨论
相关资源推荐
- 《Ext JS权威指南》——3.2节在IE中调试
- 第一课,Extjs在vs中使用及弹出对话框的介绍
- python 使用execjs执行接js解密时报错execjs UnicodeDecodeError: 'gbk' codec can't decode byte
- nodejs,excjs: Could not find a JavaScript runtime. See https://github.com/sst
- 关于使用python调用execjs报错‘gbk‘ codec can‘t decode byte 0xa8 in position 101的解决办法
- python爬虫执行js代码-execjs
- python爬虫之js逆向安装execjs
- ExtJs 的call方法简介
- 抓取青果教务系统信息
- 简单的jQuery练习-Ajax,CSS和PHP结合