首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

从代码的视角去调试代码

2012-12-19 
从代码的角度去调试代码代码角度:---------------------------------------------------------1.(level 1)

从代码的角度去调试代码

代码角度:
---------------------------------------------------------
1.(level 1)观察变量的变化,在你感觉变量的值变化有问题时,显示该变量的值;
如:在C++中:? cout? <<?“value: ”?<<? value;
? ? ?在Java中: System.out.println(“value: ” +value);
---------------------------------------------------------
2.(level 2)assertion(断言)
1)理解:
? ?因为Assertion是一种假设,所以它的结果就只有两种(true,false);
? ?在代码最容易出错的地方设置Assertion,就好比在某个地方加了个监控器,当发生异常的时候,会发出警报;
2)具体使用:
在C++中:
#include<cassert>
int main()
{
bool isTrue = false;
assert(isTrue);
return 0;
}

?

在Java中:

有两种表示:

1)assert ?Expression1

public class test {
public static void main(String[] args) {
boolean isOpen = false;
assert isOpen == true; // 提示变量值有问题
System.out.println(isOpen);
}
}

?

?

2)?assert?Expression1 : Expression2
public class test {
public static void main(String[] args) {
boolean isOpen = false;
try{
// if (isOpen == true)为真,不进行处理;反之,进行捕获(输出“wrong”)
assert isOpen == true : "wrong";
System.out.println(isOpen);
}catch(AssertionError err){
System.out.println(err.getMessage());
}
}
}
-------------------------------------------------?

3)assertion开启决定方式
? ? ?i) ?在C++中里面,编译时决定是否开启assertion。我们见到的c++工程有两个版本(debug版本和release版本),

? ? ? ? ?其中,debug版本中是有assertion,而release版本没有;
? ? ?ii) 在Java中里面,运行时决定是否开启assertion。这里会带来一定的开销,但在版本管理中,有优势;

? ? ? ? ?开启方式:Run?--->?Run...?---> 选择?Arguments?选项卡,在?VMarguments?文本框中输入:?-ea??
? ? ? ? ?注意: 中间没有空格,如果输入?-da?表示禁止断言。

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

参考网址:
? ? 1.java assert初步使用
? ? ?2.MicroFish
? ? ?3.网络学院


热点排行