背景:我个人的调试仍然停留在断点调试,停留在F5 F6 F7,watch阶段而对于更深层次的调试技巧则一无所知,因此今天打算深入地学习一下。
发现不错的参考资料:
[url]http://daimojingdeyu.iteye.com/blog/633824[/url]
文章主要提到了如下东东:
1、 条件断点
2、 变量断点
3、 方法断点
4、 改变变量值
5、 重新调试
6、 远程调试
7、 异常断点
—————————————对文章所做的补充——————————————
1、 在调试过程,可以调display窗口,在里面可以书写任何当前存在的表达式进行求值,
并且可以根据运行表达式,改变某些变量的值.
运行表达式的默认快捷键为: Ctrl+Shift+D
2、 远调有一个问题就是本地代码要和远程机上的代码一致,而且在编译时需要带行号编译,不然无法找到Class类对应的源代码中的行号信息,也就不确定断点停在代码的什么地方了。
[color=red]需要对方也有eclipse或源码吗?客户那里通常都是部署war包无源码[/color]
不需要对端有源码,也不需要对端有Eclipse,只要对端有部署的java包就好,只需要本端有就可以了,就像你说的对端也是基本上不会有源码的。需注意对端的java包中的类文件需要和本地源码一致,不然调试时会行错乱。
3、 return function(x,y);
这个时候想看看到底返回啥该如何做呢? ^_^ ^_^ 我一直都是使用一个临时变量来接受表达式的值然后查看临时变量的值,如int a = return function(x,y),调试时查看a的值, 感觉比较麻烦呀!!!
[color=blue]好办法:[/color]
选中函数,右键,然后选Inspect,或使用快捷键Ctrl+Shift+I
4、 有一个小技巧不错,在表达式窗口添加一条表达式
网友版:throw new Throwable("");
并且设为disable,
当调试到某一个地方已经得到想要的结果,下面不想继续调试了,
但是又不想重新启动tomcat之类的服务器,enable这条表达式,
等待异常抛出完,然后设为disable,否则下次进不了调试。
这种情况适用于调试后需要修改代码验证,但是后面有数据库保存
操作,不想把剩余的代码跑完的情况。
[color=red] 但是经我的试验发现并不需要设置什么enable,直接抛Throwable即可[/color]
5、注意:最好不要将多条语句放在一行上,因为会无法单步执行,也不能为同一行上的多条语句设置行断点。
6、 继续深入学习,参考资料:[url=http://www.ibm.com/developerworks/cn/opensource/os-ecbug/index.html?S_TACT=105AGX52&S_CMP=techcto]Eclipse平台调试[/url]
7、 对于多层架构的系统,eclipse里调试受到比较大的约束时,还是用log4j来比较方便。
发现不错的参考资料:
[url]http://daimojingdeyu.iteye.com/blog/633824[/url]
文章主要提到了如下东东:
1、 条件断点
2、 变量断点
3、 方法断点
4、 改变变量值
5、 重新调试
6、 远程调试
7、 异常断点
—————————————对文章所做的补充——————————————
1、 在调试过程,可以调display窗口,在里面可以书写任何当前存在的表达式进行求值,
并且可以根据运行表达式,改变某些变量的值.
运行表达式的默认快捷键为: Ctrl+Shift+D
2、 远调有一个问题就是本地代码要和远程机上的代码一致,而且在编译时需要带行号编译,不然无法找到Class类对应的源代码中的行号信息,也就不确定断点停在代码的什么地方了。
[color=red]需要对方也有eclipse或源码吗?客户那里通常都是部署war包无源码[/color]
不需要对端有源码,也不需要对端有Eclipse,只要对端有部署的java包就好,只需要本端有就可以了,就像你说的对端也是基本上不会有源码的。需注意对端的java包中的类文件需要和本地源码一致,不然调试时会行错乱。
3、 return function(x,y);
这个时候想看看到底返回啥该如何做呢? ^_^ ^_^ 我一直都是使用一个临时变量来接受表达式的值然后查看临时变量的值,如int a = return function(x,y),调试时查看a的值, 感觉比较麻烦呀!!!
[color=blue]好办法:[/color]
选中函数,右键,然后选Inspect,或使用快捷键Ctrl+Shift+I
4、 有一个小技巧不错,在表达式窗口添加一条表达式
网友版:throw new Throwable("");
并且设为disable,
当调试到某一个地方已经得到想要的结果,下面不想继续调试了,
但是又不想重新启动tomcat之类的服务器,enable这条表达式,
等待异常抛出完,然后设为disable,否则下次进不了调试。
这种情况适用于调试后需要修改代码验证,但是后面有数据库保存
操作,不想把剩余的代码跑完的情况。
[color=red] 但是经我的试验发现并不需要设置什么enable,直接抛Throwable即可[/color]
5、注意:最好不要将多条语句放在一行上,因为会无法单步执行,也不能为同一行上的多条语句设置行断点。
6、 继续深入学习,参考资料:[url=http://www.ibm.com/developerworks/cn/opensource/os-ecbug/index.html?S_TACT=105AGX52&S_CMP=techcto]Eclipse平台调试[/url]
7、 对于多层架构的系统,eclipse里调试受到比较大的约束时,还是用log4j来比较方便。