java菜鳥快速上手指南
在最簡陋的開發環境下如何編寫除錯一個hello world程式。
適用於對java語法一無所知的菜鳥程式設計師,或者只想寫程式碼但對面向物件沒興趣的程式設計師
開發環境,只要你安裝了java sdk即可
原始碼hello.java:
hello{
main(String[] args)
{
System.out.println(); }
}
編譯:
>javac hello.java
或者
>javac -g hello.java。
-g表示生成的目標檔案帶有除錯符號(推薦,因為後面使用jdb除錯程式碼需要這些符號)。編譯出來的目標檔案為hello.class
執行:
>java -cp . hello
注意hello後面不需要帶.class字尾名。
除錯:
進入hello.class和hello.java所在目錄。
>jdb -classpath . hello
進入了jdb的互動的除錯環境
在函式main中設定斷點:
>stop in hello.main
jdb顯示提示資訊:
Deferring breakpoint main.hello.
It will be set after the class is loaded.
上面的hello是類名,也就是hello.class中的hello,hello.java中的hello。main是函式名。如果在hello.java的第一行中有"package any_namespace;"語句,正確的類名就是any_namespace.main,那麼在jdb中設定斷點的語句為:
>stop in any_namespace.hello.main
設定完斷點後執行程式:
>run
可以看到jdb執行到斷點所在位置停了下來。設定斷點到類hello(在java中,類名和檔名實際上是一個意思)第3行的語句為:
>stop at hello:3
顯示錶達式的語句為print variable_name,顯示當前呼叫堆疊的語句為where,單步除錯的語句為next或者step(我想next和step的區別不用我多羅嗦了),顯示當前程式碼的語句為list。要看jdb的線上幫助,輸入help(聊勝於無的幫助而已)。
use命令為除錯符號指定所對應的原始碼檔案的搜尋路徑,如果我們刪除hello.java,然後重新啟動jdb,設定斷點,執行hello,jdb會報告"Source file not found: hello.java",這時候輸入use,可以看到當前的原始碼搜尋路徑為".",如果將hello.java拷貝到父目錄,然後輸入命令"use .;..",告訴jdb不僅去當前目錄搜尋hello.java,也要到父目錄搜尋hello.java,再輸入list命令,現在可以看到jdb正確地顯示了原始碼。