簡體   English   中英

如何修復 Intellij 調試問題?

[英]How do I fix Intellij debugging problems?

我正在嘗試切換到 Intellij,但是當我加載我的項目時,調試器似乎在跳過行並且在我嘗試單步執行時沒有跟蹤實際源代碼。 我知道這是一個模糊的問題,但有沒有人知道導致 Intellij 在調試時錯誤地鏈接到源代碼的問題?

我得到了同樣的問題。 您可以按照以下步驟操作:

  1. 刪除構建/目標文件夾
  2. 從文件中關閉項目並
  3. 從最近的項目中打開項目。
  4. 再次調試。 現在調試器將命中您的調試指針位置

謝謝 :)

我唯一能想到的是當前編譯的類與您用於調試的源不匹配。 在這種情況下,IntelliJ(或任何其他 IDE)會從類中獲取有關行號等內容的調試信息,然后將其映射到您正在查看的當前源,以顯示正在執行的代碼.

如果代碼已過時,或者版本(源代碼和編譯的類)以任何方式不匹配,則可能會發生調試器提供 IDE 信息以顯示某行,但該信息不正確提供當前源代碼,這可能會導致看起來像調試的“跳躍”行或只是停在沒有多大意義的地方。

你重建你的項目了嗎? 這些來源是否來自 Jar 中的類,您確定版本匹配嗎?

希望能幫助到你!

我一直在與基於 Gradle 的項目中的類似問題作斗爭。 我已經嘗試了 File -> Synchronize、Build -> Clean project、 gradle clean build等的所有組合。刪除了 .gradle 緩存。 反編譯 .class 文件,它看起來像正確的版本。

最終,我最終刪除了項目中的所有buildout目錄,再次嘗試運行測試並最終選擇了當前的源版本。

我記得在 Eclipse 中我總是不得不處理Eclipse Dance 我想這是 IntelliJ 的版本。

更新:我發現這是一個隨機重復出現的問題,因此如果您正在運行 Bash 等效項,我創建了一個別名來執行刪除操作。 只需設置在你的別名.bashrc.zshrc和運行deletebuilds項目目錄中:

alias deletebuilds='find . | egrep "\.class$" | sed -e "s/\/build\/.*/\/build\//" | sort | uniq | xargs rm -rf'

這假設您編譯的類文件將進入build目錄。 如果他們要去其他地方,請修改sed部分。

您可以將 IntelliJ 配置為使用 Eclipse java 編譯器,這可能會解決您的問題。 從以下鏈接:

https://youtrack.jetbrains.com/issue/IDEA-8021

" 這不是關於著名的舊 javac 問題的第一個報告:對於某些 try/catch 和 if/else 結構,它生成了幾個字節碼指令,這些指令與行號錯誤地關聯。因此,在單步執行時,調試器遇到帶有不同行號的跳轉指令行號並決定停止(因為行號已更改) javac 不應該為該指令分配不同的行號。

您會在 Eclipse 中看到不同的行為,只是因為它使用自己的編譯器,而該編譯器沒有這個問題。 如果您將 Eclipse 配置為使用 javac 進行編譯,您將准確地看到所描述的行為。 或者,您可以將 IDEA 設置為使用 eclipse 編譯器來解決該問題(僅適用於當前 EAP 版本 - 構建 5xxx - 已與 eclipse 編譯器集成)”

另請參閱有關配置 Maven 以使用 Eclipse 編譯器的 Q:

在 Maven 構建中使用 Eclipse Java Compiler (ecj)

這個問題可能類似於這個問題https://intellij-support.jetbrains.com/hc/en-us/community/posts/206170749-IDEA-14-1-1-debugger-using-decompiled-code-instead-源代碼

Project Structure (Ctrl+Alt+Shift+S) > Modules ,如果您已將調試模塊的任何 jar 添加到任何其他模塊的依賴項中,Intellij 可能會使用該 jar 的反編譯版本而不是最新的源代碼,因此執行將在反編譯版本的斷點處暫停。 即使從不依賴於已調試模塊的其他模塊調用已調試模塊,也會發生此問題。

要解決此問題,只需從項目結構中所有模塊的依賴項中刪除已調試模塊的 jar。 如果您不知道哪些模塊具有調試的模塊 jar 作為依賴項,您可以使用一些工具(例如 Sublime Text、bash、...)來搜索每個模塊中存儲在 Intellij *.iml文件中的模塊名稱. 刪除后,您可能需要Sync the project並執行Maven > Reimport

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM