动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.J2EE编程起步(3).
.用SQLJ开发数据库(3).
.一个计时类.
.工作流引擎的三种定位及其取舍.
.Java核心代码例程之:DatagramCl.
.关于传值和值的引用的问题!.
.Java之旅(9)多态性.
.java 基础入门 pom.xml 元素描述.
.精通Hibernate之映射继承关系一(.
.WebSphere应用服务器保护电子商务.
.在JAVA中使用文档对象模型DOM经验.
.通用上载组件的原理及实现.
.win2000server install j2ee.
.java多线程数据库操作.
.TextStream 对象.
.构建高性能J2EE应用的5种策略.
.jira keygen.
.J2EE修炼之四书五经.
.Java的Build工具—Ant应用指南(.
.基于JAVA的ICQ系统的设计于实现.

Java调试教程--客户机端调试

发表日期:2008-1-5 |



  摘要

  有许多调试技术可供选择。请一定要检查工具文档以查看它是否支持这些技术。了解不同的调试技术有助于选择符合您所有需要的调试器。


--------------------------------------------------------------------------------



  Java调试教程(四)--客户机端调试

  SUN Laura Bennett

  介绍客户机端调试技术

  有许多调试技术可供选择。请一定要检查工具文档以查看它是否支持这些技术。了解不同的调试技术有助于选择符合您所有需要的调试器。

  使用 system.out.println() 进行调试

  有必要提一下简单化调试。假如有一小段代码,应该使用 System.out.println(),不必浪费时间使用全功能调试器来装入并单步调试这些代码。在运行时期间,System.out.println() 会在控制台或将输出重定向到的位置上显示消息、变量和状态信息。所有对象都继续了 toString() 方法。在开发新的对象时,覆盖此方法并生成您自己的对象字符串表示法是个不错的想法。

  Michael C. Daconta 的 Java Pitfalls(请参阅参考资料)共享了应用 println()方法的有用技术。Daconta 建议创建 DebugManager() 类,这个类答应您根据某些类或应用程序来设置一个调试标志。假如代码中有许多 if(debug) 嵌套语句,那么可以使用DebugManager() 类作为代替。仍然可以选择开始调试整个系统。

  一个示例方案就是答应您划分单元和显示背景的映射系统。在某些情况下,可能想查看只适用于 Plot Units 应用程序的调试语句,而在其它情况下,可能想要查看整个系统的调试。应该创建类似于下列代码的 DebugManager() 类:


public class DebugManager
{
public static final String SYSTEM_DEBUG_KEY = "system.Debug";
public static final boolean debug;
static
{
debug = toBoolean(SYSTEM_DEBUG_KEY);
}
private static boolean toBoolean(String key)
{
String sDebug = System.getProperty(key);
if (sDebug != null && sDebug.equalsIgnoreCase("true"))
debug = true;
else
debug = false;
}
public static boolean getSystemDebug()
{
return debug;
}
public static boolean getSystemDebug(String applicationKey)
{
if (debug′ ′debugToBoolean(applicationkey))
return true;
else
return false;
}
}



  使用 system.out.println() 进行调试的练习

  使用上一屏中的代码,应用程序会生成类似于以下的调用来查询调试方式(“开”或“关”):boolean debug = DebugManager.getSystem.Debug(applicationkey);输入以下命令行,对划分工具或背景或者整个系统进行调试:


java -DplotTool.Debug=true -DbackgroundLoader.Debug=true
-Dsystem.Debug=false MapSystem



  以上的语句说明了对 plotTool 应用程序和背景显示应用程序打开了调试,但对整个系统关闭了调试。每个应用程序的应用程序键是: plotTool ;应用程序密钥是 plotTool.Debug;背景显示程序应用程序键是 backgroundLoader.Debug;整个系统的应用程序键是 system.Debug。

  真正的代码将封装在 if(debug) 语句中。假如调试是真,则将执行封装的代码,然后打印 System.out.println() 方法的结果。

  总之,假如要调试少量代码,只推荐使用 if(debug)。将 DebugManager() 创建成单独的编译类,以便在需要时能立即使用。

  使用注释进行调试

  使用注释是另一种调试方法。使用二分法搜索算法,开始时就注释掉大部分代码,然后缩?到错误重新出现。此时,就找到了出错的位置。此外,建议不要在大规模的项目中使用二分法搜索算法。

  连接到正在运行的程序

  许多程序员使用连接到正在运行的进程的技术,作为远程调试的替代技术,用于测试跨平台兼容性。可以验证某个应用程序在不同的 JVM上是否正常运行。这种技术还可以让您确保在另一个机器上有全部必需的系统资源。某些调试器可以让您连接到多个 JVM,调试多层系统时,这样做将变得价值连城。随着一层变成活动的,调试器连接到它的 JVM,并开始彻底检查它。

  将调试器连接到发生错误或故障的正在运行的程序或正在运行的 JVM。

  使用这种调试方法有两个主要原因:

  预计程序中某个特定位置会有问题,但又不想单步调试程序或者设置断点。

  正在开发或维护偶然会暂挂的程序,并且想要找出暂挂的原因。

  在这种情况下,可以连接调试器,并查找死循环或其它可能导致程序暂挂的问题。 正在连接的 JVM 必须正在以调试方式运行。它既可以是远程系统,也可以是本地系统。源文件可以在任意一个系统上。

  远程调试

  设想程序在另一个用户的系统上运行与在您自己的系统上运行的运转情况肯定会不同。从您的系统上,使用远程调试功能来调试其它系统上的远程程序。远程调试要求在一个计算机上运行应用程序,并在另一个计算机上调试它。当调试复杂的GUI应用程序时,远程调试会变得非常有用。调试设施本身的用法就象调试运行本地的代码完全一样。然而,设置和监控调试会话稍微复杂一些。请参考调试器文档,以查看它是否支持远程调试,以及如何设置环境。

  远程调试的主要要求是访问网络机器。正在调试的类文件必须驻留在远程机器上,并且已经编译过以备调试。由于使用了 GUI 调试器,于是客户机用户界面在一个系统上运行,而调试引擎在另一个系统上运行。

  有两种远程调试:同类和异类。当本地和远程系统都使用相同的操作系统时,将发生同类远程调试。当本地和远程系统使用不同的操作系统时,将发生异类远程调试。

  为什么要使用远程调试呢?

  当调试器用户界面独立于应用程序用户界面时,易于调试使用图形或有图形用户界面的应用程序。与应用程序的交互发生在远程系统上,而与调试器的交互发生在本地系统上。已经针对一个平台编译了要调试的程序,而调试器用户界面不在该平台上运行。可以使用远程调试功能在调试远程应用程序时利用调试器用户界面。

  按需求调试

  无论何时在程序中发生未处理的异常或不可纠正的错误,按需求调试都可以让您打开调试会话。调试器启动,并连接到程序中发生故障的位置。这样做可以节省时间,有两种方法:不必重新创建错误,在碰到故障之前,程序可以全速运行而不会受到调试器的干扰。

  由于使用了按需求调试,可以找到并修复应用程序中的问题,让应用程序继续运行。

  优化代码调试

  调试优化代码有一点复杂,因为不能同时优化和调试代码。有时,问题只在优化期间出现,从而指出存在逻辑错误。

  捕捉这些类型的错误的最佳方法是使用二分法搜索技术,如下所述:

  开始时,只优化一部分代码,查看错误是否仍然存在。在每次更改优化模块数量之后,假如错误仍然存在,则减少优化模块的数量;假如错误消失了,则优化更多模块。最后将错误范围缩小到单个模块或少数模块。查找问题,如在变量被写入之前读取该变量,或超过存储器范围的数组下标。
上一篇:Java调试教程--使用Jikes进行调试 人气:504
下一篇:Java调用存储过程 人气:992
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-21 Nucleus v3.33 多国语言版
2008-8-21 HDWiki v4.0 bulid 080821 UTF-8
2008-8-21 明科在线客服系统 v6.0
2008-8-21 KesionCMS v5.0.2 正式版 utf-8
2008-8-21 KesionEshop v5.0.2 正式版 utf-8
2008-8-21 HDWiki v4.0 bulid 080821 GBK
2008-8-21 新文互动酷站展示系统 v1.5
2008-8-21 Punbb v1.2.20 多国语言版
2008-8-21 QQ头像网 beta
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号