IDEA-DeBug理論與實踐

文章目錄

        • 01_Debug簡介和意義
        • 02_IDEA中的Debug步驟
        • 03_跳轉到當前代碼執行的行
        • 04_步過調試的使用
        • 05_步入調試的使用
        • 06_強制步入調試的使用
        • 07_步出調試的使用
        • 08_回退斷點調試的使用
        • 09_運行到光標處
        • 10_計算表達式
        • 11_條件斷點
        • 12_多線程調試


在這里插入圖片描述

在這里插入圖片描述


在軟件開發中,IDEA(IntelliJ IDEA)是一種常用的集成開發環境,而DeBug則是調試功能的一部分。IDEA-DeBug的意義在于幫助開發人員在編寫和測試程序時發現和修復 bug(錯誤)。

通過使用IDEA的調試功能,開發人員可以逐行執行代碼、觀察變量的值以及程序執行流程,從而更容易地找到程序中的問題所在。Debug功能可以幫助開發人員定位代碼中的錯誤,解決程序運行時出現的異常行為,提高代碼的質量和穩定性。同時,Debug也可以幫助開發人員更好地理解代碼的執行過程,加深對程序行為的理解。

IDEA-DeBug的意義在于提供了強大的調試工具,幫助開發人員更高效地進行程序調試和錯誤修復,從而提高代碼的質量和開發效率。


01_Debug簡介和意義
  • 什么是程序DeBug?
    • Debug,是程序開發人員必會的一項調試程序的技能。
    • 企業中程序開發和程序調試的比例為1:1.5,可以說如果你不會調試程序,你就沒有辦法從事編程工作。
  • Debug能幫助我們做什么?
    1. 追蹤代碼的運行流程。
    2. 程序運行異常定位。
    3. 線上問題追蹤。
  • Debug對于程序學習者的意義
    1. 通過調試能夠更好的查看程序的執行流程。
    2. 復雜的程序邏輯,通過老師的口述講解,很難理解清楚,這個時候借助調試能夠很好的幫助同學們理解程序。
    3. 定位問題,提高自我解決問題的能力。

02_IDEA中的Debug步驟
  • 設置斷點
  • 調試程序(8個按鈕)

8個按鈕

按鈕說明
2019-09-28_163744.jpg(Alt + F10):如果你的光標在其它行或其它頁面,點擊這個按鈕可跳轉到當前代碼執行的行
2019-09-28_164022.jpg(F8):步過,一行一行地往下走,如果這一行上有方法不會進入方法。
2019-09-28_162345.jpg(F7):步入。如果當前行有方法,可以進入方法內部,一般用于進入自定義方法內,不會進入官方類庫的方法。
2019-09-28_164200.jpg(Alt + Shift + F7):強制步入,能進入任何方法,查看底層源碼的時候可以用這個進入官方類庫的方法。
2019-09-28_164215.jpg(Shift + F8):步出,從步入的方法內退出到方法調用處,此時方法已執行完畢,只是還沒有完成賦值。
2019-09-28_164428.jpg回退斷點。
2019-09-28_164418.jpg(Alt + F9):運行到光標處,你可以將光標定位到你需要查看的那一行,然后使用這個功能,代碼會運行至光標行,而不需要打斷點。
2019-09-28_164437.jpg(Alt + F8):計算表達式。
  • 觀察變量
    • 查看變量有三種方式:
      • 程序區查看變量
      • Debugger的Variables中查看變量
      • 鼠標懸停到變量名上會彈出當前變量的值

2019-09-28_165050.jpg

  • 查看輸出

03_跳轉到當前代碼執行的行
  • 跳轉到當前代碼執行的行(Alt + F10) 2019-09-28_163744.jpg
  • 作用
    • 使程序窗口切換到當前正在運行的程序處。

04_步過調試的使用
  • 步過調試
    • 步過調試按鈕(F8)2019-09-28_164022.jpg
  • 作用
    • 步過,一行一行地往下走,如果這一行上有方法不會進入方法。
    • 常用于調試過程中不想進入調用的方法體的情況。

05_步入調試的使用
  • 步入調試
    • 步過調試按鈕(F7)2019-09-28_162345.jpg
  • 作用
    • 步入,一行一行地往下走,如果這一行上有方法,則進入方法內部。
    • 一般用于進入自定義方法內,不會進入官方類庫的方法。

06_強制步入調試的使用
  • 強制步入調試
    • 強制步入調試按鈕(Alt + Shift + F7)2019-09-28_164200.jpg
  • 作用
    • 進入官方類庫方法
    • 幫助我們學習和查看JDK源碼

07_步出調試的使用
  • 步出調試
    • 步出調試按鈕(Shift + F8)2019-09-28_164215.jpg
  • 作用
    • 從方法內退出到方法調用處。
    • 調試的時候,有時候會跳入到自己不想查看的方法體,這個時候使用步出。

08_回退斷點調試的使用
  • 回退斷點
    • 回退斷點按鈕 2019-09-28_164428.jpg
  • 作用
    • 回退到當前方法的調用處。
    • 當想重新查看該方法體的執行過程時,不用重新啟動Debug,可以使用回退斷點方式。

09_運行到光標處
  • 運行到光標處
    • 運行光標處按鈕 (F9)2019-09-28_164418.jpg
    • 作用
      • 使程序運行到光標處,而無需設置斷點。

10_計算表達式
  • 計算表達式
    • 計算表達式按鈕(Alt + F8)2019-09-28_164437.jpg
      2019-10-03_182159.jpg
  • 作用
    • 設置變量,在計算表達式的框里,可以改變變量的值,這樣有時候就能很方便我們去調試各種值的情況了。

11_條件斷點
  • 條件斷點
    • 右鍵單擊斷點處,可以設置進入斷點的條件
      2019-10-03_182101.jpg
  • 作用
    • 通過設置斷點條件,在滿足條件時,才停在斷點處,否則直接運行。

12_多線程調試
  • 步驟
    • 多線程調試,需要調整斷點掛起級別為Thread
      2019-10-05_164127.jpg
    • Frame中選擇線程進行調試


在這里插入圖片描述



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710923.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

THINKPHP 跨域報錯解決方案

報錯:has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the requested resource. 環境:thinkphp6 nginx 今天和VUE配合調用接口的時候發現跨…

果園預售系統|基于Springboot的果園預售系統設計與實現(源碼+數據庫+文檔)

果園預售系統目錄 目錄 基于Springboot的果園預售系統設計與實現 一、前言 二、系統功能設計 三、系統功能設計 1 、果園管理 2、水果管理 3、果樹管理 4、公告管理 四、數據庫設計 1、實體ER圖 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲…

常見的4種Bug 出現原因和解決方案

某項目定期進行線上Bug分析大會,主要針對近期出現的Bug和事故進行分析其出現的原因。經過一段時間的數據分析和匯總,找到了在開發過程中,較為常見的Bug以及其出現的原因。 通過分析原因,進一步找到解決方案,從而有利于…

2024.02.29作業

1. TCP模型 server #include "test.h"#define SER_IP "192.168.191.128" #define SER_PORT 9999int main(int argc, char const *argv[]) {int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sfd){perror("socket error");return -1;…

Java底層自學大綱_數據結構和算法篇

數據結構和算法專題_自學大綱所屬類別學習主題建議課時(h) A 數據結構和算法001 數據結構和算法基礎,時間復雜度Ot和空間復雜度Os2.5 A 數據結構和算法002 數學知識回顧-指數、對數、級數、模運算、復雜度2.5 A 數據結構和算法003 高數知識…

算法沉淀——動態規劃之兩個數組的 dp(上)(leetcode真題剖析)

算法沉淀——動態規劃之兩個數組的 dp 01.最長公共子序列02.不相交的線03.不同的子序列04.通配符匹配 01.最長公共子序列 題目鏈接:https://leetcode.cn/problems/longest-common-subsequence/ 給定兩個字符串 text1 和 text2,返回這兩個字符串的最長 …

0201sherlock(福爾摩斯)-通過名稱尋找媒體賬號(地址)-github-開源項目學習

文章目錄 一 項目簡介二 項目安裝和演示1 安裝2 演示 三 源碼分析1 項目結構2 主程序源代碼分析 四 添加自定義網址結語 一 項目簡介 二 項目安裝和演示 1 安裝 # clone the repo $ git clone https://github.com/sherlock-project/sherlock.git# change the working direct…

前端訪問線上的html 怎么給html 的js中傳遞 訪問路徑

1.需求 我想在項目中訪問一個html 文件 這個html 文件中 跳轉的又是另一個地址 。這個需求是為了讓實現公眾號H5 的重定向登錄 主要是 一個oem 系統 他有多個公眾號 但是每個公眾號 都有對應不用的域名 2.動態域名 <!DOCTYPE html> <html lang"zh">&…

opencv--使用直方圖找谷底進行確定分割閾值

直方圖原理就不說了&#xff0c;大家自行百度 直方圖可以幫助分析圖像中的灰度變化&#xff0c;進而幫助確定最優二值化的灰度閾值&#xff08;threshold level&#xff09;。如果物體與背景的灰度值對比明顯&#xff0c;此時灰度直方圖就會包含雙峰&#xff08;bimodal histo…

Python web框架fastapi數據庫操作ORM(一)

文章目錄 Fastapi ORM操作1、創建模型2、創建數據庫連接配置文件3、啟動項目4、根據模型類創建數據庫表1. 初始化配置&#xff0c;只需要使用一次2. 初始化數據庫&#xff0c;一般情況下只用一次3. 更新模型并進行遷移4. 重新執行遷移&#xff0c;寫入數據庫5. 回到上一個版本6…

Oracle 11g升級19c 后部分查詢功能很慢

*Oracle 11g升級19c 后部分查詢功能很慢 今天生產突然有個查詢非常慢&#xff0c;日志顯示執行了50秒左右&#xff0c;但是從日志中拿出SQL在PLSQL執行&#xff0c;發現用時不到1秒&#xff0c;查看SQL,懷疑是下面幾種原因導致 1、使用函數不當 UNIT.UNIT_CODE LIKE CONCAT(‘…

狀態碼轉文字!!!(表格數字轉文字)

1、應用場景&#xff1a;在我們的數據庫表中經常會有status這個字段&#xff0c;這個字段經常表示此類商品的狀態&#xff0c;例如&#xff1a;0->刪除&#xff0c;1->上架&#xff0c;0->下架&#xff0c;等等。 2、我們返回給前端數據時&#xff0c;如果在頁面顯示0…

python 線程、進程區別與事例

線程&#xff1a;簡單來說&#xff0c;一個進程中包含多個線程&#xff0c;比如打開一個 QQ&#xff08;進程&#xff09;&#xff0c;然后你一邊聊 QQ&#xff08;一個線程&#xff09;&#xff0c;一邊用 QQ 傳送文件&#xff08;一個線程&#xff09;&#xff0c;等等。在一…

Linux中如何執行腳本

要執行一個保存在文件中的腳本&#xff0c;可以按照以下步驟進行&#xff1a; 1. 創建腳本文件&#xff1a; 首先&#xff0c;使用文本編輯器&#xff08;如 ?vi?、?nano?等&#xff09;創建一個新的腳本文件&#xff0c;并將需要執行的命令寫入到文件中。例如&#xff0…

【Unity】在Unity中導出WebGL并讀取Excel數據的實現方法

在游戲開發中&#xff0c;數據的處理和導出是至關重要的環節之一。Unity作為一款強大的游戲開發引擎&#xff0c;提供了豐富的工具和功能來處理和導出數據&#xff0c;包括將游戲導出為WebGL應用&#xff0c;并讀取外部數據文件&#xff0c;比如Excel表格。本文將介紹如何在Uni…

gpt生成器,批量gpt文章生成器

GPT&#xff08;生成式預訓練模型&#xff09;生成器軟件在當今的數字化時代扮演著越來越重要的角色&#xff0c;它們通過人工智能技術&#xff0c;可以自動生成各種類型的文章內容&#xff0c;為用戶提供了無限的創作可能性。本文將介紹6款不同的GPT生成器軟件&#xff0c;并介…

STM32自學?AD單通道

程序的最終運行成果: 當轉動電位器時&#xff0c;數值和電壓值發生變化 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #include "stdint.h" void ad_Init(void) { /* 初始化步驟&#xff1a;…

java學習筆記-初級

一、變量 1.雙標簽 <!-- 外部js script 雙標簽 --><script srcmy.js></script> 在新文件my.js里面寫&#xff1a; 2.字符串定義&#xff1a; //外單內雙var str 我是一個"高富帥"的程序員;console.log(str);// 字符串轉義字符 都是用 \ 開頭 …

并發編程中常見的設計模式,c++多線程如何設計

C多線程設計&#xff08;任務的“多對一”、“一對多”、“多對多”情況 該如何設計線程&#xff1f;&#xff09; C書籍中并未找到對多線程設計&#xff0c;有很完整詳細的總結&#xff01;&#xff01;C并發編程書籍中也只是一些理論或則零散的多線程實例。無奈&#xff0c;…

MySQL-MHA搭建、故障測試

一、架構說明 MHA&#xff08;Master High Availability&#xff09;是一個用于 MySQL 主從復制管理和自動故障轉移的開源工具集。MHA 的主要目的是提供 MySQL 環境的高可用性和自動故障轉移功能&#xff0c;確保在主庫發生故障時能夠快速切換到備庫&#xff0c;降低業務中斷時…