本文目錄一覽:
- 1、java如何調試
- 2、java程序調試的5種方法
- 3、java調試
java如何調試
最基本的操作是:
1, 首先在一個java文件中設斷點,然後運行,當程序走到斷點處就會轉到debug視圖下,
2, F5鍵與F6鍵均為單步調試,F5是step into,也就是進入本行代碼中執行,F6是step over,
也就是執行本行代碼,跳到下一行,
3,F7是跳出函數
4,F8是執行到最後。
1.Step Into (also F5) 跳入
2.Step Over (also F6) 跳過
3.Step Return (also F7) 執行完當前method,然後return跳出此method
4.step Filter 逐步過濾 一直執行直到遇到未經過濾的位置或斷點(設置Filter:window-preferences-java-Debug-step Filtering)
5.resume 重新開始執行debug,一直運行直到遇到breakpoint
6.hit count 設置執行次數 適合程序中的for循環(設置 breakpoint view-右鍵hit count)
7.inspect 檢查 運算。執行一個表達式顯示執行值
8.watch 實時地監視變數的變化
9.我們常說的斷點(breakpoints)是指line breakpoints,除了line
breakpoints,還有其他的斷點類型:field(watchpoint)breakpoint,method
breakpoint,exception breakpoint.
10.field breakpoint 也叫watchpoint(監視點) 當成員變數被讀取或修改時暫掛
11.添加method breakpoint 進入/離開此方法時暫掛(Run-method breakpoint)
12.添加Exception breakpoint 捕抓到Execption時暫掛(待續…)斷點屬性:
1.hit count 執行多少次數後暫掛 用於循環
2.enable condition 遇到符合你輸入條件(為ture\改變時)就暫掛
3.suspend thread 多線程時暫掛此線程
4.suspend VM 暫掛虛擬機
13.variables 視圖裡的變數可以改變變數值,在variables 視圖選擇變數點擊右鍵–change value.一次來進行快速調試。
14.debug 過程中修改了某些code後–〉savebuild–resume–重新暫掛於斷點
java程序調試的5種方法
1.debug。斷點調試。
2.輸出消息。system.out.println();來調試。
3.動態代理(Dynamic
Proxy)。動態代理是一個特定的Java特性,它允許開發者引入proxy類,加進某一給定類之前,並通過某一給定介面截獲所有調用。你可以在很短時間內用一個普通代理設置一個虛擬事件處理器,來查看事件發生順序。當需要理解事件處理器時這是最簡單和快捷的方法。
4.運行時剖析器(Run-time
Profiler)。剖析器是通過特定的JVM
hooks在系統中跟蹤所有調用的強大工具。但是用它來跟蹤執行過程是大才小用。
5.Aspects。面向方面編程。它是截獲你的代碼執行既快速又容易的方法。你可以圍繞方法、構造器、屬性訪問等等有選擇地設置hook,而不需要修改原始代碼。在這些hook中,你可以列印調試消息。
1.2常用的。3.4.5網上找的。
java調試
第一問:
public class Point
{
int x, y;
float a, b;
static int z;
void setValue(int m, int n)
{
this.x = m;
this.y = n;
}
void setValue(float a, float b)
{
this.a = a;
this.b = b;
}
static void output()
{
Point point = new Point();
System.out.println(“x=” + point.x + “, y=” + point.y + “, a=” + point.a + “, b=” + point.b + “, z=” + Point.z);
}
}
第二問:
public Point()
{
super();
}
public Point(int z1, int z2, float z3, float z4)
{
this.x = z1;
this.y = z2;
this.a = z3;
this.b = z4;
}
第三問:
public static void main(String[] args)
{
Point pt1 = new Point();
pt1.setValue(1, 2);
pt1.setValue(3, 4);
Point pt2 = new Point();
pt2.setValue(5, 6);
pt2.setValue(7, 8);
}
第四問:
Point pt3 = new Point(9, 10, 11, 12);
第五問:
System.out.println(“x=” + pt1.x + “, y=” + pt1.y + “, a=” + pt1.a + “, b=” + pt1.b);
System.out.println(“x=” + pt2.x + “, y=” + pt2.y + “, a=” + pt2.a + “, b=” + pt2.b);
第六問:
System.out.println(“pt1.z=” + pt1.z);
System.out.println(“pt2.z=” + pt2.z);
System.out.println(“pt3.z=” + pt3.z);
pt1.output();
pt2.output();
pt3.output();
System.out.println(“Point.z=” + Point.z);
Point.output();
output();
希望可以幫到你。
原創文章,作者:RHLSO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329885.html