Thắc mắc về debug code Java sử dụng breakpoint trong Intellij

Em gặp vấn đề trong việc debug với Intellij như sau:
Dưới đây là lớp App

package com.example.dictionaryy;
import...
public class App extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource("main.fxml"));
       //...
    }

    public static void main(String[] args) {
        launch();
}
}

Và đây là lớp MainController (nằm ở package khác)

package com.example.dictionaryy;
import ...
public class Controller implements Initializable {
     //...
     private void loadScene(String s) {
        Parent root = null;
        try {
            root = FXMLLoader.load(getClass().getResource(s));
        } catch (IOException e) {
            e.printStackTrace();
        }
        defaut.setCenter(root);
    } 
}

Em muốn debug dòng root = FXMLLoader.load(getClass().getResource(s)); trong lớp Controller. Nhưng khi thêm breakpoint vào dòng đó

thì gặp các trường hợp:

  1. Nhấn debug ở lớp App thì không hiện debug gì cả mà chương trình chạy như bình thường

  1. Nếu thêm breakpoint vào 1 dòng nào đó trong App rồi bấm debug trong App thì mới hiện cửa sổ debug, nhưng ko có debug của dòng em cần bên lớp Controller.

  1. Cái này em vướng mắc nhất: em bấm debug trong lớp MainController thì nó hiện cửa sổ Edit Config


dù chọn Module nào cũng báo đỏ Module not specified, nếu chọn Continue Anyway thì không hiện cửa sổ debug như mục 2.

và như trong ảnh thì có lẽ cần thêm hàm main trong MainController, có cách nào debug mà không cần làm thế không ạ?

Ảnh dưới là em thêm hàm main trong MainController chỉ để debug, nhưng vẫn không hiện cửa sổ debug như mong muốn


Mọi người giải đáp giúp em với ạ.

Điều này có nghĩa là method kia không được gọi cậu ạ :smile:
Cậu nên kiểm tra lại xem.

Đây là expected behavior, cậu cần chạy chương trình thì mới debug được.
MainController một mình không là chương trình mà.

Cậu có thể viết unit test, gọi tới method cậu muốn trong MainController, rồi chạy debug test đó.
Cơ mà cậu đang viết chương trình GUI, tớ không chắc cậu sẽ thành công với cách đó.
Cậu vẫn cần kiểm tra lại lý do sao method kia không được gọi.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?