eclipse的斷點調試的幾種方法


eclipse的斷點調試的幾種方法

linebreakpoint

我們可以在斷點處設置某種條件,當達到該條件的時候才會停在斷點處:

    private int x;

public void setX(int x) {
this.x = x;//斷點處
}

在斷點處設置屬性:
這里寫圖片描述
只有在x是偶數的時候,才會進入斷點處。

watchpoint

watchpoint描述(http://en.wikipedia.org/wiki/Breakpoint):
Other kinds of conditions can also be used, such as the reading, writing, or modification of a specific location in an area of memory. This is often referred to as a conditional breakpoint, a data breakpoint, or a watchpoint.
當設置了一個watchpoint,就告訴IDE你希望監視一塊內存。當被監視的內存的內容發生變化時(reading,writing,or modification),watchpoint就被觸發了,此時程序暫停運行,等待我們查看,由於我們監控的是一塊內存區域那么我們實際上是監控所在的內存空間

public class BreakPoint {
private int value = 0;//這里有一個watchpoint
private Random random = new Random();

public void setValue(int count) {
for (int i = 0; i < count; i++) {
value = random.nextInt(10);
System.out.println(value);
}
}
}

默認情況下watchpoint的property在讀寫的時候均進入變量查看:
這里寫圖片描述
也就是說以下兩行代碼在運行的時候均會停下

value = random.nextInt(10);
System.out.println(value);

取消access(訪問)的特性,那么下面代碼就會跳過(訪問value值)

System.out.println(value);

同理,取消modify(修改)的特性,那么下面代碼會跳過監視(修改value值)

value = random.nextInt(10);

ExceptionBreakPoint

這里寫圖片描述
添加某個Exception(如IllegalArgumentException),那么在當程序執行到異常代碼的時候會觸發斷點。例子:

    public void setValue(int count) {
for (int i = 0; i < count; i++) {
value = 4;
}
}

void printValue(int count) {
setValue(count);
if (value % 4 == 0) {
throw new IllegalArgumentException("這個value值是不合法的");
}
System.out.println(value);
}

當程序運行到異常的時候,會觸發斷點。我們可以跟蹤異常附近的變量值。

MethodBreakPoint

修改方法斷點的屬性,勾選Exit的選項
這里寫圖片描述

    public void setValue(int count) {//該行設個斷點
for (int i = 0; i < count; i++) {
value = random.nextInt(10);
}
}

那么在進入方法和離開方法的手都會暫停。


注意debug的環境配置要和build的環境配置一致,否者如果build的版本較高:
這里寫圖片描述
debug的版本較低:
這里寫圖片描述
會出現如下的類版本錯誤的信息:

Exception in thread "main" java.lang.UnsupportedClassVersionError: test/ConcurrentHashMapTest : Unsupported major.minor version 52.0

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com