日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

netbeans調(diào)試程序的方法

 Ethan的博客 2011-01-03
調(diào)試是檢查應(yīng)用程序是否存在錯誤的過程。您可以使用以下方法進行調(diào)試:在代碼中設(shè)置斷點和監(jiān)視,然后在調(diào)試器中運行代碼。您還可以通過逐行執(zhí)行代碼并檢查應(yīng)用程序狀態(tài)來查找任何問題。

IDE 使用 Sun Microsystems JPDA 調(diào)試器來調(diào)試程序。在啟動調(diào)試會話時,所有相關(guān)的調(diào)試器窗口都將自動出現(xiàn)在屏幕的底部。您可以調(diào)試整個項目、任何可執(zhí)行類以及任何 JUnit 測試。IDE 還允許您通過將調(diào)試器連接到應(yīng)用程序進程來調(diào)試在遠程計算機上運行的應(yīng)用程序。

運行或調(diào)試 Web 應(yīng)用程序、JSP 頁或 Servlet 時,您可以使用 HTTP 監(jiān)視器來監(jiān)視數(shù)據(jù)流。缺省情況下,將出現(xiàn) HTTP 監(jiān)視器,該監(jiān)視器收集有關(guān) Servlet 引擎處理的 HTTP 請求的數(shù)據(jù)。對于引擎處理的每個 HTTP 請求,監(jiān)視器都會記錄關(guān)于傳入請求的數(shù)據(jù)、保留在服務(wù)器上的數(shù)據(jù)狀態(tài)和 Servlet 上下文。您可以查看數(shù)據(jù)、為將來的會話存儲數(shù)據(jù)、重新顯示和編輯以前的請求。有關(guān) HTTP 監(jiān)視器的詳細信息,請在主菜單中選擇“幫助”>“幫助內(nèi)容”。

對于自由格式項目,您必須為“調(diào)試項目”命令編寫一個 Ant 目標。您還可以編寫用于調(diào)試特定文件的目標,并將這些目標映射到項目的命令。

在此部分中,您將了解以下內(nèi)容:

基本調(diào)試

在此部分,我們將使用一個簡單的示例來說明如何啟動調(diào)試會話、如何以手動方式逐步執(zhí)行代碼以及如何監(jiān)視變量和方法調(diào)用。我們將在后面的部分介紹更高級的功能,如設(shè)置斷點和監(jiān)視。

此部分的示例是 Array Fill 應(yīng)用程序。此應(yīng)用程序非常簡單。它將創(chuàng)建一個 sampleBeans 數(shù)組,每個 Bean 包含兩個屬性:firstNamelastName。然后,它將為每個 Bean 的屬性賦值并輸出這些值。

首先需要運行該應(yīng)用程序以確定它是否會拋出任何異常。下載并提取 ArrayFill 示例的 .zip 歸檔文件 (。要在 IDE 中打開 ArrayFill 項目,請按 CTRL-Shift-O 組合鍵找到提取的 ArrayFill 文件夾,然后單擊“打開項目文件夾”。將在 IDE 中打開 ArrayFill 項目,并可在“項目”窗口中看到該項目的邏輯結(jié)構(gòu)。http://www./files/documents/4/446/ArrayFill.zip)

在“項目”窗口中,展開“源包”下的 arrayfill 包。arrayfill 包包含兩個類:ArrayFillSampleBean。右鍵單擊 ArrayFill.java,然后按 Shift-F6 組合鍵執(zhí)行它。在“輸出”窗口中出現(xiàn)的輸出應(yīng)該與如下所示類似:

java.lang.NullPointerException
at arrayfill.ArrayFill.loadNames(arrayFill.java:27)
at arrayfill.ArrayFill.main(ArrayFill.java:34)
Exception in thread "main"
Java Result: 1

啟動調(diào)試會話

在 IDE 中啟動調(diào)試會話時,IDE 將編譯所調(diào)試的文件,在調(diào)試模式下運行它們,并在調(diào)試器窗口中顯示調(diào)試器輸出。要啟動調(diào)試會話,請選擇要調(diào)試的文件,然后從“運行”菜單中選擇以下某個命令:

  • 調(diào)試主項目 (F5)。運行主項目,直至遇到第一個斷點。
  • 步入 (F7)。開始運行主項目的主類,并在第一條可執(zhí)行語句處停止。
  • 運行至光標 (F4)。啟動調(diào)試會話,使應(yīng)用程序運行至源代碼編輯器中的光標位置,然后暫停應(yīng)用程序。

如果在 IDE 中打開了多個項目,請確保使用以下方法將 Array Fill 設(shè)置為主項目:在“項目”窗口中右鍵單擊 ArrayFill 節(jié)點,然后從上下文菜單中選擇“設(shè)置主項目”。按 F7 鍵步入主項目的主類。如果未設(shè)置項目的主類,則 IDE 將提示您設(shè)置它。然后,IDE 將在源代碼編輯器中打開文件,顯示“輸出”窗口和調(diào)試器窗口,并剛好在 main 方法內(nèi)部停止。

調(diào)試器窗口

讓我們簡單了解一下調(diào)試器窗口。調(diào)試器窗口在每次啟動調(diào)試會話時自動打開,并在完成會話時自動關(guān)閉。缺省情況下,IDE 將打開三個調(diào)試器窗口:“局部變量”窗口、“監(jiān)視”窗口和“調(diào)用棧”窗口。

屏幕快照:“局部變量”窗口位于前端的調(diào)試器窗口

“局部變量”窗口位于前端的調(diào)試器窗口

通過從“窗 口”>“調(diào)試”菜單中進行選擇,可以打開其他調(diào)試器窗口。如果在調(diào)試會話過程中打開了調(diào)試器窗口,該窗口將在您完成會話后自動關(guān)閉。如果在未啟動調(diào) 試會話的情況下打開調(diào)試器窗口,該窗口將一直保持打開狀態(tài),直到您手動關(guān)閉它。您可以通過將調(diào)試器窗口拖動到所需位置來對其進行排列。

下表列出了調(diào)試器窗口。

名稱

快捷鍵

描述

局部變量

Alt-Shift-1

列出了當前調(diào)用中的局部變量。

監(jiān)視

Alt-Shift-2

列出了選擇在調(diào)試應(yīng)用程序時進行監(jiān)視的所有變量和表達式。

調(diào)用棧

Alt-Shift-3

列出了在當前線程執(zhí)行期間執(zhí)行的調(diào)用序列。

Alt-Shift-4

顯示了由當前所調(diào)試的進程裝入的所有類的分層結(jié)構(gòu)。

斷點

Alt-Shift-5

列出了當前項目中的斷點。

會話

Alt-Shift-6

列出了當前在 IDE 中運行的調(diào)試會話。

線程

Alt-Shift-7

列出了當前會話中的線程組。

Alt-Shift-8

列出了項目類路徑上的源目錄。通過在此處取消選擇類的源文件夾,可以設(shè)置是步入還是越過這些類。IDE 將自動越過 JDK 類;如果要步入這些類,請在此窗口中選擇 JDK 源。

逐步執(zhí)行代碼

可以使用“運行”菜單中的以下命令來控制代碼在調(diào)試器中的執(zhí)行方式:

  • 越過 (F8)。執(zhí)行一行源代碼。如果源代碼行包含調(diào)用,則執(zhí)行整個例程而不逐步執(zhí)行單個指令。
  • 步入 (F7)。執(zhí)行一行源代碼。如果源代碼行包含調(diào)用,則會剛好在執(zhí)行例程的第一條語句之前停止。
  • 步出 (Alt-Shift-F7)。執(zhí)行一行源代碼。如果源代碼行是某個例程的一部分,則會執(zhí)行該例程的其余各行,然后將控制權(quán)返回給例程的調(diào)用者。
  • 暫停。暫停執(zhí)行應(yīng)用程序。
  • 繼續(xù) (Ctrl-F5)。繼續(xù)執(zhí)行應(yīng)用程序。應(yīng)用程序?qū)⒃谙乱粋€斷點處停止。
  • 運行至光標 (F4)。將當前會話運行到源代碼編輯器中的光標位置,并暫停應(yīng)用程序。

在本示例中,使用 F7 鍵按一次一行的方式逐步執(zhí)行代碼。loadNames 調(diào)用中出現(xiàn) NullPointerException,因此在步入該調(diào)用時,將在“局部變量”視圖中監(jiān)視 names 數(shù)組的值。每個 Bean 都包含一個 null 值??梢岳^續(xù)逐步執(zhí)行 loadNames 方法 - names Bean 始終為 null。

屏幕快照:在調(diào)試器中步入代碼

在調(diào)試器中步入代碼

此處的問題是,當代碼行

SampleBean[] myNames=new SampleBean[fnames.length];

啟動包含這些 Bean 的數(shù)組時,它不會實例化 Bean 自身。必須添加以下代碼,在 loadNames 方法中實例化各個 Bean:


names=new SampleBean();

使其位于 loadNames 方法中的行 names.setLastName(lnames); 之前。

使用斷點

大多數(shù)應(yīng)用程序都太大,從而無法逐行進行檢查。通常,在您認為會出現(xiàn)問題的位置設(shè)置一個斷點,然后將應(yīng)用程序運行到該位置。您還可以設(shè)置更為專用的斷點(如僅當指定條件為 true 時停止執(zhí)行的條件斷點)或適用于某些線程或方法的斷點。

在此節(jié)中,我們將使用上一個示例中的 ArrayFill 類,因此必須將上面添加的代碼注釋掉以便重現(xiàn)錯誤。

設(shè)置斷點

如果僅希望設(shè)置簡單的行斷點,則可以單擊所需行的左旁注處。在旁注中將會出現(xiàn)行斷點圖標 (斷點圖標)。再次單擊此行斷點可以將其刪除。

屏幕快照:在源代碼編輯器中設(shè)置斷點

在源代碼編輯器中設(shè)置斷點

對于更復雜的斷點,請使用“運行”菜單中的“新建斷點”(Ctrl-Shift-F8) 命令。“新建斷點”對話框?qū)⑹鼓軌蜻x擇要創(chuàng)建的斷點類型并設(shè)置斷點選項,如中斷條件或斷點輸出到“輸出”窗口的信息。

設(shè)置斷點條件

僅當指定的布爾表達式為 true 時,條件斷點才停止執(zhí)行。如果要設(shè)置條件斷點,請打開“新建斷點”對話框,然后在“條件”字段中輸入表達式。

例如,打開 ArrayFill.java,在 main 方法的 loadNames 方法調(diào)用中設(shè)置插入點,然后按 Ctrl-Shift-F8 組合鍵。在該對話框的“條件”字段中輸入 names!=null 并單擊“確定”。然后按 F5 鍵開始調(diào)試項目。此時會在 loadNames 方法內(nèi)中斷程序的執(zhí)行。

定制斷點輸出

在“新建斷點”對話框中,您還可以指定到達斷點時打印的信息。請在對話框底部的“打印文本”字段中輸入任何消息。您可以使用變量引用要顯示的某些類型的信息。

斷點類型

下表列出了可用的不同斷點類型。

類型

描述

可以在到達行時或在行中的元素滿足某些條件時中斷執(zhí)行。

方法

如果在方法名稱上設(shè)置了斷點,則在每次執(zhí)行該方法時都會停止執(zhí)行應(yīng)用程序。

異常

具有多個用于設(shè)置異常斷點的選項。在捕獲到特定異常、源代碼中未處理特定異?;蛴龅饺魏萎惓#o論應(yīng)用程序是否處理錯誤)時都可以中斷執(zhí)行應(yīng)用程序。

變量

可以在訪問(例如,將變量作為參數(shù)來調(diào)用方法)或修改特定類和字段中的變量時停止應(yīng)用程序的執(zhí)行。

線程

可以在啟動和/或停止線程時中斷執(zhí)行應(yīng)用程序。

如果設(shè)置了類斷點,則可以在將類裝入虛擬機和/或從虛擬機中卸載類時停止調(diào)試器。

設(shè)置監(jiān)視

通過使用監(jiān)視,可以在應(yīng)用程序執(zhí)行期間跟蹤變量或表達式值的變化。要設(shè)置監(jiān)視,請在源代碼編輯器中選擇要設(shè)置監(jiān)視的變量或表達式,然后單擊鼠標右鍵并選擇“新建監(jiān)視”(Ctrl-Shift-F7)。

您還可以在“監(jiān)視”視圖中創(chuàng)建固定監(jiān)視。常規(guī)監(jiān)視描述的是變量的內(nèi)容,而固定監(jiān)視描述的則是當前為變量指定的對象。要創(chuàng)建固定監(jiān)視,請右鍵單擊“局部變量”或“監(jiān)視”視圖中的任意項,然后選擇“創(chuàng)建固定監(jiān)視”。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多