如何在 VS Code 中除錯 LeetCode 程式碼?

Fundebug發表於2019-04-20

摘要: 面試刷題指南。

Fundebug經授權轉載,版權歸原作者所有。

近期收到不少小夥伴的求助,希望知道如何在 VS Code 中除錯 LeetCode 程式碼。通常來說,為了除錯原生程式碼,我們需要安裝相關的語言支援外掛。本文中,我們就以除錯 LeetCode Java 程式碼為例,給大家介紹本地除錯 LeetCode 程式碼的常用套路。

想要了解如何在 VS Code 中刷題的小夥伴,可以移步:LeetCode for VS Code: 春招 Offer 收割利器

準備工作

首先確保系統內安裝了JDK,相關教程有很多,此處就不贅述了。

之後我們需要確保在 VS Code 中安裝了下列外掛:

1. LeetCode

用來生成題目,提交答案。

2. Language Support for Java(TM) by Red Hat

提供智慧提示等語言相關的功能。

3. Debugger for Java,Java

偵錯程式。

安裝完成之後,VS Code 的外掛管理欄中,就可以看到這三個外掛了:

如何在 VS Code 中除錯 LeetCode 程式碼?

如果在開啟 Java 檔案後,VS Code 提示找不到 JDK,請檢查一下相關配置是否正確

編寫除錯程式碼:

我們就拿第 20 題:有效的括號作為例子。

在作答過程中,可能會看到編輯器裡出現一些紅線。不要擔心,這表明 Language Support for Java 外掛正在起作用。通常這意味著你的程式碼存在語法錯誤,下面的例子展示的錯誤原因是用到了依賴包但沒有 import 到當前檔案當中。我們可以利用 Quick Fix 功能進行修復:

如何在 VS Code 中除錯 LeetCode 程式碼?

將依賴包匯入時為了確保檔案能夠被正確編譯。LeetCode 在檢查答案的時候,並不會要求檔案中存在相應的 import 語句,因此存不存在 import 語句不會影響最後的檢查結果。

寫完答案之後,我們還需要在同一個檔案中,增加一個 Main 函式作為除錯程式的執行入口,整個檔案的程式碼結構如下:

class Main {
    public static void main(String[] args) {
        // Create a new Solution instance
        Solution solution = new Solution();
        // Create a test case
        String testCase = "()[]{}";
        // Get the answer
        boolean answer = solution.isValid(testCase);
        // Print the answer
        System.out.println(answer);
    }
}

class Solution {

    ...

    public boolean isValid(String s) {

        ...

        return answer;
    }
}
複製程式碼

此時我們會看到在 Main 函式的上方出現了兩個 CodeLens 按鈕:

如何在 VS Code 中除錯 LeetCode 程式碼?

點選 Run 按鈕會執行 Main 函式,我們可以在下方彈出的 Debug Console 中看到程式的輸出結果(因為我們在最後一行程式碼用了 println 輸出答案)。

如果想要除錯的話,可以在相應的行號位置設定好斷點,點選 Debug 按鈕,就可以進入除錯模式檢視程式碼執行情況了。

這裡有一點需要注意的是,由於 LeetCode 生成的答題模板的類名均為 Solution,因此會造成同一個目錄下存在多個同名類的情況出現,可能導致程式碼無法正確執行,因此如果希望除錯 LeetCode Java 程式碼,但當前目錄又存在有多個 LeetCode Java 檔案時,需要保證類名的唯一性,我們可以把被除錯的 Solution 類改一個名字(但要記住提交時把名字改回來),或者乾脆拷貝到另一個乾淨的目錄下除錯即可。

以上就是如何在 VS Code 中除錯 LeetCode Java 程式碼的步驟,對於其他語言來說,基本也是大同小異的步驟,如果你有更好的建議或者有自己喜歡的除錯技巧,歡迎在評論區留言!

相關文章