java调试过程分析,Java程序调试技巧浅析

用Java这么久,说来惭愧,大部分情况下使用的调试语句是:System.out.println("value:"+value);这种形式,这两天看了些关于Java程序调试技巧的东西,总结一下,以后要积极使用:

一:一种很简单的方法就是使用一个boolean量如:debugMode,需要看看程序的输出时可以使用:if(debugMode)System.out.println("..");

在项目完毕后把debugMode变量设为false;这种方法的不足是:为了启动或者禁止debug,必须改动代码

二:一个比上述方法稍好的是:使用Java -D:如:Java -Ddebug=true MyClass,在使用这种方法时,必须在你所有的class中添加System.getProperty("debug")来取得调试标志,这样***种方法的使用,就改为:publicstaticfinalbooleandebug;

static{

String sDebug=System.getProperty("debug");

if(sDebug!=null&& sDebug.equalsIngnoreCase("true"))

debug=true;

else

debug =false;

}

这样在不更改source code的情况下可以直接修改Java程序调试标志,但是这样不够灵活,比如你不能指定哪一部分使用调试功能,而只是要使用调试功能就必须在代码的全部使用,这样就引出了第三种调试方法,可以定义一个用于调试的类。publicclassDebugManager {

publicstaticfinalString SYSTEM_DEBUG_KEY="system.Debug";

publicstaticfinalbooleandebug;

static{

debug = toBoolean(SYSTEM_DEBUG_KEY);

}

privatestaticbooleantoBoolean(String key){

booleandebug;

String sDebug = System.getProperty(key);

if(sDebug !=null&& sDebug.equalsIgnoreCase("true"))

debug =true;

else

debug =false;

returndebug;

}

publicstaticbooleangetSystemDebug(){

returndebug;

}

publicstaticbooleangetSystemDebug(String applicationKey) {

if(debug || toBoolean(applicationKey))

returntrue;

else

returnfalse;

}

}

这样对于一个application(Test)可以着牙功能调用:

boolean debug =DebugManager.getSystemDebug(applicationKey);

要打开Test的调试功能,只需:

java -DTest.Debug=true Test

当然这个类可以进行进一步扩展,比如将其变为日志管理,控制调试信息的输出位置等

三、使用断言

断言是Merlin(jdk1.4)中一项新功能,默认情况下不使用断言,但是programmer可以在任何时候enable或者disable这项功能,从而可以在测试时启用断言验证,而在部署时禁用断言验证,而程序运行时若用户碰到问题时再重新启用断言。断言检查,失败时不会抛出

Exception,而是抛出AssertionError,

1,断言的两种语法形式:

(1)assert booleanExpression;

(2) assert boolExpression:message; //message将作为错误抛出后的结果显示

assert必须位AssertTest于可执行快中,不能将assert和实例的类变量一起使用,但可以将其放在任何方法内。

2,在Java程序调试中启用断言:

编译:javac -source 1.4 AssertTest.java

运行:java -ea AssertTest (参数)

-ea是启用断言的简易方法,但是-ea不能用于系统类,

(1)若要对系统类使用断言:则需:-enablesystemassertions,或者-esa

(2)若要对这个package启用断言:要在-ea后加(:,package的名字,...)如对test.util包及其所有的子包启用断言,则可以java -ea:test.util... AssertTest

【编辑推荐】

【责任编辑:red7 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值