Like Share Discussion Bookmark Smile

J.J. Huang   2021-09-11   天堂私服   瀏覽次數:

天堂私服 | IntelliJ IDEA 天堂模擬器除錯(Debug)

問題

每次核心修改完畢編譯成Jar檔,然後啟動模擬器(黑盒子),登入遊戲後可以看到修改的結果;但是沒辦法做所謂的Debug剛剛修改過的程式碼。
這樣在針對核心的修改,無法快速開發、測試、定位問題…等等諸多不方便。

這時候只需要會IDE內的除錯模式就可以解決此問題。

註:如不清楚除錯模式,請參考IntelliJ IDEA 逐步除錯(Debug)的步驟與演練

分析 main class

之前教學的啟動模擬器,都是透過執行Jar檔來做啟動;而我們在使用原始碼的時候,其實是不容易知道到底哪個是主要程式裡面main方法。
而啟動Jar檔的時候,他是如何知道哪支程式是主要的main方法呢?

  • 必需有任何一套解壓縮軟體。
  • 針對l1jserver.jar做解壓縮的動作。
  • 進入解壓縮後的目錄→l1jserverMETA-INF
  • 看到MANIFEST.MF檔案,- 並編輯器軟體開起此檔案。
  • 可見內容Main-Class: l1j.server.Server,說明了主要的程式是哪支class
  • 分析完後,可以把剛剛解壓縮的l1jserver目錄做刪除。

    註:如對此檔有興趣,可以參考聊一聊JAR文件和MANIFEST.MF

模擬器除錯模式

分析後的主要mainclass

1
l1j.server.Server
  • 開啟IntelliJ IDEA,並選擇L1J-3.80c專案進入。
  • 點即打開主要的main程式。
  • 點擊srcl1j.serverServer將程式打開於工作區。
  • 點擊程式中的main方法左邊的啟動按鈕,並選擇除錯(Debug)模式選項。
  • 此時下方的除錯視窗是彈出,並且輸出與啟動Jar檔黑盒子的內容一樣。
  • 此時模擬器已經啟動成功。
  • 使用登入器嘗試登入看是否可以正常連線進入。
  • 我們嘗試在Beginner程式內的,第54設定斷點。
    1
    src.l1j.server.server.model.Beginner
  • 天堂建立新人物。
  • 會跳回Intellia IDEA視窗,且斷點在剛剛設定的位置。
  • 且天堂視窗會卡在人物建立的畫面並不會到人物選擇畫面。
  • 此時就可以做除錯的行為了。
    • 觀察一下con
    • 觀察一下pstm1
    • Step Over:步過。
    • 再觀察一下pstm1
  • 假設都沒問題後,可以按下Resume Program恢復程式,讓程式正常執行完畢。
  • 回到天堂視窗可見已經建立好人物,且回到人物選擇視窗。

結語

針對模擬器核心的Debug到這邊教學相信已經非常清楚,希望接處核心開發修改的新手們,不至於不知道如何開始,可以輕鬆簡單的快速上手。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章結目錄,此處會不定時更新。

免責聲明

  • 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
  • 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有
  • 本部落格文章為研究SQL資料庫與修改JAVA語法使用,非商業用途,亦無做營運事實等任何一切商業行為
  • 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容

註:以上參考了
聊一聊JAR文件和MANIFEST.MF