入門
我們將調試以下代碼:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyHelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("text/Html");
PRintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println("<HEAD>");
out.println("<TITLE>Hello World Sample Servlet</TITLE>");
out.println("<meta http-equiv="content-Type" content="text/html;
charset=gb2312"></head>");
out.println("</BODY>");
out.println("</HTML>");
//out.close();
}
}
首先,為運行 Servlet 引擎做預備。可以使用 Tomcat 或 Servletrunner。
要預備運行 Servlet 引擎,應配置 CLASSPATH。CLASSPATH 需要查找 sun.servlet.http.HttpServer 及其相關類。另外,CLASSPATH 還需要查找 /lib 目錄中的 Servlet文件 tools.jar。
在本練習中,看不到任何 GUI,因為 JDB 是命令行界面。
啟動調試器
啟動 Servlet 引擎??梢允褂?Tomcat 或 Servletrunner。
將 JVM 配置成使用非凡引導類路徑 -Xbootclasspath。引導類路徑必須包括 rt.jar文件和 tools.jar 文件??梢栽诿钚兄性O置該環境變量。
啟動 Servlet 引擎來調試 MyHelloWorld Servlet。啟動 Tomcat 或Servletrunner。
現在需要對 HttpServlet 類啟動調試器。輸入:
jdb sun.servlet.http.HttpServlet
應該看到以下響應:
Initializing jdb...
HTTPServer 類包含偵聽對 Servlet 的進入請求的 main() 方法。
此外,代碼并沒有錯,我們只是選擇它來進行實例研究。
設置斷點
接著,在 MyHelloWorld 的 doGet() 方法中設置斷點。
> stop in MyHelloWorld.doGet
Breakpoint set in MyHelloWorld.doGet
> run
run sun.servlet.http.HttpServer
running ...
單步調試代碼 現在以調試方式運行 Servlet。在瀏覽器中輸入:
http://yourmachine:8080/servlet/MyHelloWorld
調試器將在 doGet() 方法開始處的斷點位置停止。將在啟動調試器的 DOS窗口中看到這一情況??梢允褂?list 命令來查看調試器在 Servlet 中的哪個位置停止。
其它 JDB 命令
在 JDB 會話中可以使用其它命令來調試代碼。以下是 JDK 2.0 中的樣本:
Step 逐行單步調試。 Print 打印表達式的值。 Locals 打印當前方法的局部變量。Threads 列出所有線程。 Help 提供 JDB 命令的幫助,列出所有命令選項及其定義。
新聞熱點
疑難解答