首頁 > 軟體

java程式設計師必會的遠端debug教學

2022-08-05 18:01:21

正文

現在都是拆分的比較細的微服務了,當系統執行在測試環境出現問題的時候,就需要按照紀錄檔來分析出什麼問題了。有的能看出來,要是年久失修的老專案,那麼說不定連log都沒有。純純的看原始碼找問題,效率就很低了。

其實這個時候還可以遠端debug,來更精確的定位問題。效率也是高高滴。

這個之前在工作中其實一直在使用,但是不知道咋設定的,今天就找了一些資料,自己實際設定了一下。

下邊我們介紹下如何操作:

啟動新增引數

啟動的時候新增如下引數:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=192.168.1.101:7891 -jar demo-0.0.1-SNAPSHOT.jar

引數大概講一下:

transport 指定了偵錯資料的傳送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共用記憶體方式,其中,dt_shmem只適用於Windows平臺;

address 偵錯伺服器的埠號,使用者端用來連線伺服器的埠號;

server=y/n VM 是否需要作為偵錯伺服器執行;

suspend=y/n 是否在偵錯使用者端建立連線之後啟動 VM;

啟動成功後顯示如下:

設定idea

我我們可以去idea設定了。

點選 editConfigurations...

點選左上角的+號,選擇Remote Jvm Debug

填寫地址和埠號

點選apply,點選OK

啟動debug模式

這時就可以點選debug按鈕啟動了

成功會有如下提示:

測試

編寫測試程式碼如下:

@Slf4j
@RestController
@RequestMapping("test")
public class TestDebug {
    @GetMapping(value = "debug/{num}")
    public String verifyNum(@PathVariable Integer num) {
        int a = num;
        log.info("接收到引數{}",a);
        return "ok";
    }
}

當使用瀏覽器存取這個介面,並在log位置新增斷點的時候

http://192.168.1.101:8080/test/debug/1

就會走進斷點,並顯示我們傳入的值。

這個時候就可以愉快的debug啦。

以上就是java程式設計師必會的遠端debug教學的詳細內容,更多關於java遠端debug的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com