亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JDB的簡單使用

2019-11-18 14:04:54
字體:
來源:轉載
供稿:網友

  JDB 的簡單使用
新手可以看看,呵呵

余紹峰 (yusf@emc.eea.tsinghua.edu.cn)
2001 年 4 月

當新手開始學習java時,在一開始的新鮮感后馬上就會發現的一個問題就是如何調試。大家知道在Visual C++中提供了很好的調試工具,使用起來非凡的方便。Java中,以JDK為例,沒有一個方便的圖形界面,所以給新手調試帶來了很多的困難。很多人一開始是用System.out.PRintln()來觀察輸出結果。假如寫的程序很大,這樣的方法就顯然是效率太低。下面結合自己的學習體會簡單談一下Java中的調試工具JDB的使用。
環境:jdk 1.2.2

首先我們寫一個最簡單的小程序,但是它包含了一些最基本的面向對象要素。

class test

{

int a;

int b;

test(int aa,int bb)

{

a = aa;

b = bb;

}

int add()

{return a+b;}

}

public class hehe

{

public static void main(String args[])

{

int a = 2;

int b = 3;

int c= a+b;

System.out.println(c);

test kk=new test(1,2);

System.out.println(kk.add());

}

}



存為hehe.java后,用javac -g hehe.java進行編譯。用參數g是為了產生各種調試信息,不用就無法調試。假如這里碰到問題,請參考Helloworld攻略。上面的程序是可以通過的,可以直接用java hehe運行。下面結合該例子談談JDB的使用。

首先鍵入jdb hehe 假如出現下面信息,說明系統沒有找到調試的類。此時可以用java -classpath . hehe命令解決。

C:javasource>jdb hehe

Initializing jdb...

hehe not found

>



假如出現一下信息,說明開始進行調試,一切正常。假如是調試Applet,則用 appletviewer -debug hehe.Html命令進行調試

C:javasource>jdb -classpath . hehe

Initializing jdb...

0xb0:class(hehe)

>



回想VC中的調試,應該是設置斷點,然后再進行跟蹤。Java中也是一樣。用stop命令進行斷點設置。然后用 run 命令開始調試,運行程序到斷點,這里斷點是設置在 main 主函數中。

> stop at hehe:18

Breakpoint set at hehe:18

> run

run hehe

running ...

main[1]

Breakpoint hit: hehe.main (hehe:18)

main[1]



此時可以用locals命令查看變量,用step命令進入下一條命令,也可以用單獨一個stop命令來查看斷點的設置情況。注重此時b還沒有被賦值。 main[1] locals

Method arguments:

Local variables:

args =

a = 2

main[1] step

main[1]

Breakpoint hit: hehe.main (hehe:19)

main[1]



當運行到System.out.println()函數時,會出現一下提示:

main[1] step

main[1]

Breakpoint hit: java.lang.ClassLoader.loadClass (ClassLoader:247)

這個是因為我們跟蹤進去了println方法,我們一般沒有必要這樣做,此時可以用next跳過該方法進入到下一條一句。step的含義是進入函數跟蹤,next是轉入下一條語句執行。我們隨時可以鍵入 locals 和 list 命令來查看變量值和當前運行的代碼。下面箭頭指到地方即為當前程序運行到的地方。

main[1] next

main[1]

Breakpoint hit: hehe.main (hehe:20)

main[1] list

16 {

17 int a = 2;

18 int b = 3;

19 int c= a+b;

20 => System.out.println(c);

21 test kk=new test(1,2);

22 System.out.println(kk.add());

23

24 }

main[1]

接下來的問題自然是如何查看對象。當程序運行到new命令處時,鍵入locals,可以看到 main[1] step

main[1]

Breakpoint hit: test. (test:5)

main[1] list

1 class test

2 {

3 int a;

4 int b;

5 => test(int aa,int bb)

6 {

7 a = aa;

8 b = bb;

9 }

main[1] locals

Method arguments:

Local variables:

this = test@64fd6722

aa = 1

bb = 2

main[1]

可以看到此時顯示的變量值是類test中構造函數中的變量值。this對象即為當前構造的對象??梢杂胐ump命令進行查看。

main[1] dump this

this = (test)0x11a {

int b = 0

int a = 0

}

也可以在main函數中用dump kk和print命令命令進行對象查看 main[1] dump kk

kk = (test)0x11a {

int b = 2

int a = 1

}

main[1] print kk

kk = test@64fd6722

main[1] print kk.a

kk.a = 1

main[1] print kk.b

kk.b = 2

最后鍵入cont命令,假如沒有其他斷點,程序就直接運行完畢退出。調試結束。 main[1] cont

3



> Current thread "main" died. Execution continuing...

>

hehe exited



上述操作中的斷點都是設置在main函數中的,假如要設置在調用的類方法中,則要用 stop in yourclassname.functionname 命令來進行設置,比如說: > stop in test.add

Breakpoint set in test.add

> run

run hehe

running ...

main[1] 5

Breakpoint hit: test.add (test:11)

main[1] list

7 a = aa;

8 b = bb;

9 }

10 int add()

11 => {return a+b;}

12 }

13 public class hehe

14 {

15 public static void main(String args[])

main[1]



這樣的話,我們已經可以在程序中的幾乎所有需要地方的地方進行斷點設置并進行跟蹤,查看變量。
JDB還有很多的調試手段,除了上面那些最常用的,其他很重要的還有clear清除斷點,use設置源程序路徑,memory顯示當前內存使用狀況,gc強制進行內存回收,!!重復上面的命令,thread設置當前線程,quit和exit退出jdb等,還有遠程調試等內容,都很有用。這里就不一一介紹了。

關于作者
余紹峰,大四學生,有近一年的 VC 編程經驗。出于愛好,于 2001 年開始學習 Java 歡迎各位高手新手多多提批評意見,共同學習,共同進步。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品吴梦梦| 欧美极度另类性三渗透| 成人午夜小视频| 青草青草久热精品视频在线网站| 久久男人av资源网站| 欧美激情网站在线观看| www.日本久久久久com.| 亚洲第一网站男人都懂| 国产精品专区h在线观看| 国产精品视频xxxx| 欧美在线不卡区| 热99精品只有里视频精品| 久久久久久久久亚洲| 在线观看中文字幕亚洲| 欧美激情性做爰免费视频| 欧美亚洲伦理www| 日韩中文字幕精品视频| 俺去了亚洲欧美日韩| 精品国产精品自拍| 91在线观看免费| 久久国产色av| 国产精品久久久久久久天堂| 韩国精品美女www爽爽爽视频| 欧美午夜性色大片在线观看| 亚洲最大av在线| 国产精品十八以下禁看| 国产一区二区三区在线播放免费观看| 美女av一区二区三区| 亚洲国产精品女人久久久| 最近中文字幕2019免费| 97免费视频在线播放| 久久久久久久久久国产精品| 久久天天躁狠狠躁夜夜躁2014| 一区二区日韩精品| 亚洲欧洲美洲在线综合| 国产拍精品一二三| 国产成人精品久久二区二区91| 日韩美女视频中文字幕| 日韩中文字幕精品| 国产香蕉97碰碰久久人人| 91精品国产成人| 成人福利网站在线观看| 欧美精品一区在线播放| 中文字幕无线精品亚洲乱码一区| 精品日本高清在线播放| 欧美日韩国产va另类| 日韩视频亚洲视频| 中文字幕精品国产| 麻豆国产精品va在线观看不卡| 日韩免费精品视频| 国产成人福利网站| xx视频.9999.com| 亚洲成人a**站| 午夜精品免费视频| 国产精品美女在线观看| 91在线播放国产| 国产精品成人观看视频国产奇米| 久久av中文字幕| 亚洲精品视频二区| 亚洲影院在线看| 成人av资源在线播放| 国产精品高清在线观看| 日韩av123| 97碰碰碰免费色视频| 国产精品嫩草影院久久久| 国产精品v片在线观看不卡| 国产精品美女免费| 色偷偷偷亚洲综合网另类| 国产精品久久久久久久久久久久久久| 性色av一区二区三区在线观看| 日韩av在线电影网| 91精品啪aⅴ在线观看国产| 伊人男人综合视频网| 国产精品日韩精品| 日韩精品高清在线观看| 国产成人精品亚洲精品| 日韩在线观看免费高清| 午夜精品蜜臀一区二区三区免费| 日韩在线欧美在线国产在线| 91精品视频播放| 欧美中文字幕在线播放| 日韩欧美黄色动漫| 色婷婷av一区二区三区久久| 亚洲丁香婷深爱综合| 欧美一区二区三区免费视| 国产欧美精品在线| 精品动漫一区二区三区| 国产91色在线免费| 国a精品视频大全| 久久亚洲私人国产精品va| 日韩专区在线观看| 欧美日韩另类视频| 91亚洲一区精品| 久久免费视频网站| 国产精品白丝jk喷水视频一区| 国产91成人在在线播放| 久热精品视频在线| 国产亚洲一区精品| 性日韩欧美在线视频| 久久精品久久久久久国产 免费| 91网站在线免费观看| 亚洲第一网中文字幕| 色偷偷91综合久久噜噜| 精品视频—区二区三区免费| 国产精品一区二区久久| 97视频免费在线观看| 亚洲国产精品久久久久久| 久久成人亚洲精品| 国产精品久久久av久久久| 亚洲另类图片色| 欧美精品午夜视频| 国产精品日韩欧美大师| 九九热视频这里只有精品| 欧美极度另类性三渗透| 国产精品视频专区| 韩国美女主播一区| 亚洲第一视频在线观看| 久久精品成人一区二区三区| 亚洲久久久久久久久久| 久久99久久99精品免观看粉嫩| 国产视频久久久久| 久久精品这里热有精品| 一区二区亚洲精品国产| 国产激情久久久久| 91av在线免费观看| 亚洲精品白浆高清久久久久久| 久久久久久久久网站| 91大神福利视频在线| 日韩欧美在线第一页| 亚洲欧美中文日韩在线v日本| 午夜精品久久17c| 欧美日韩激情视频8区| 成人久久18免费网站图片| 国产精品久久久久久久久久久久久| 亚洲国产日韩一区| 97在线视频免费| 国产精品扒开腿做爽爽爽男男| 亚洲欧美日韩国产中文专区| 久久久久久有精品国产| 一区二区三区亚洲| 久色乳综合思思在线视频| 麻豆乱码国产一区二区三区| 成人精品一区二区三区电影黑人| 欧美在线视频网| 久久噜噜噜精品国产亚洲综合| 国产精品爽黄69天堂a| 日韩欧美亚洲综合| www.欧美三级电影.com| 亚洲精品动漫久久久久| 亚洲精品一区在线观看香蕉| 欧美成人精品三级在线观看| 亚洲欧美日韩精品久久亚洲区| xvideos成人免费中文版| 国产精品视频白浆免费视频| 亚洲成人黄色在线观看| 成人国产亚洲精品a区天堂华泰| 国产精品一区二区久久久久| 亚洲国产精品va在看黑人| 久久91亚洲人成电影网站| 国产精品久久久久77777| 最近免费中文字幕视频2019| 久久免费高清视频| 国产专区欧美专区| 欧美激情精品久久久久久变态|