【web應用】如何進行前后端調試Debug? + 前端JavaScript調試Debug?

文章目錄

  • 一、前后端:后端以Debug模式運行后端項目,打斷點
  • 二、前后端:前端項目在瀏覽器中調試
  • 三、單獨前端:前端JavaScript調試
    • 1、控制臺輸出
    • 2、網頁調試器中添加斷點
    • 3、debugger關鍵字


一、前后端:后端以Debug模式運行后端項目,打斷點

首先以Debug模式運行后端項目。
在這里插入圖片描述
項目運行后,左下角有一些調試選項。
在這里插入圖片描述

給項目代碼行打斷點,鼠標放到行數的左側點一下就可以添加斷點或者取消斷點。

在這里插入圖片描述

二、前后端:前端項目在瀏覽器中調試

首先運行前端項目,在網頁中打開,然后按下F12進行網頁調試。

轉到network選項,這時候還沒顯示header response|等信息。
在這里插入圖片描述

我們這時候鼠標長按沙漏圖標,同時按下F5,進行刷新,就會出現網頁運行情況列表。

在這里插入圖片描述
出現調用網頁信息。

在這里插入圖片描述

這時候還沒出現header和response怎么辦呢?選中當前請求的頁面,在右側就可以看到信息了。

在這里插入圖片描述

在這里插入圖片描述

這時候在頁面上點擊查詢按鈕進行請求,后端會命名斷點,IDEA圖標在閃爍。進入后臺后,可以按F8進行單步調試,按綠色三角形進行放行全部執行完。

在這里插入圖片描述
一些調試按鍵:

F8 下一步
F7 進入函數
Shift+F8 出去函數
F9 結束這次調試

輸出臺可以查看監視結果。
還可以添加查看,就是你想觀察哪個變量,在watch里添加即可,右鍵,new watch 添加查看
或者,右鍵,evaluate expression,執行結果
在這里插入圖片描述

在程序出錯的時候,我們可以很方便的用debug來看看哪里出錯了,而且,debug還有一個好處,在debug模式中,你修改了java函數里面的內容、xml文件,可以不用重啟tomcat,直接頁面刷新就行,但是注意如果新加了java文件、修改了java函數的參數、函數的名字,這樣都是需要重啟tomcat的。

三、單獨前端:前端JavaScript調試

如果只想在前端中調試JavaScript代碼怎么辦呢?

首先給出測試代碼:

html (template)

<!-- 加法計算器 --><div class="calculator-container"><h3>加法計算器</h3><div><input v-model.number="x" type="number" placeholder="輸入x" style="width: 80px; margin-right: 10px;">+<input v-model.number="y" type="number" placeholder="輸入y" style="width: 80px; margin: 0 10px;">=<span style="width: 80px; margin-left: 10px; display: inline-block;">{{ sum }}</span></div></div><!-- 字符串彈窗功能 --><div class="string-input-container"><h3>字符串彈窗</h3><div><input v-model="inputString" type="text" placeholder="輸入字符串" style="width: 200px; margin-right: 10px;"><button @click="showAlert" style="padding: 5px 10px;">顯示字符串</button></div></div><h3></h3>

JavaScript

import { ref, onMounted, computed } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus'// 加法計算器數據
const x = ref(0)
const y = ref(0)// 字符串彈窗數據
const inputString = ref('')// 計算屬性const sum = computed(() => x.value + y.value)
console.log(sum)debuggerconst showAlert = () => {if (!inputString.value.trim()) {ElMessage.warning('請輸入字符串')return}console.log(inputString.value)// 使用Element Plus的彈窗ElMessageBox.alert(inputString.value, '輸入的字符串', {confirmButtonText: '確定'})// 或者使用瀏覽器原生alert(二選一)// alert(`你輸入的字符串是: ${inputString.value}`)
}

css

.calculator-container,
.string-input-container {margin-bottom: 20px;padding: 15px;border: 1px solid #ebeef5;border-radius: 4px;background-color: #f5f7fa;
}h3 {margin-top: 0;margin-bottom: 10px;color: #303133;
}.input-field {padding: 8px 12px;border: 1px solid #dcdfe6;border-radius: 4px;margin: 0 8px;
}.input-field.wide {width: 200px;
}.operator {margin: 0 5px;font-weight: bold;
}.result {display: inline-block;min-width: 80px;padding: 8px 12px;margin-left: 8px;background-color: #f0f7ff;border: 1px solid #d9ecff;border-radius: 4px;text-align: center;
}.action-btn {padding: 8px 16px;background-color: #409eff;color: white;border: none;border-radius: 4px;cursor: pointer;margin-left: 10px;
}.action-btn:hover {background-color: #66b1ff;
}

有多種方法可以調試 JavaScript 代碼,最簡單的方法就是使用 console.log()、document.write()、alert() 等方法來打印程序中各個變量、對象、表達式的值,以確保程序每個階段的運行結果都是正確的,推薦使用 console.log(),如下例所示:

1、控制臺輸出

在這里插入圖片描述

然后在網頁中F12進行調試 ,轉到console選項下,就可以看到輸出的結果。

在這里插入圖片描述
使用這種方法調試代碼有一個弊端,那就是這些輸出語句并不是代碼中需要的,雖然它們不會影響代碼的運行,但是為了代碼更加整潔,在調試完程序后我們需要手動清理干凈。

2、網頁調試器中添加斷點

斷點是瀏覽器內置調試工具的重要功能之一,通過設置斷點可以讓程序在我們需要的地方中斷(暫停),從而方便我們對該處代碼進行分析和邏輯處理。以 Chrome 瀏覽器為例,要進行斷點調試首先需要打開瀏覽器內置的開發者工具(按 F12 或者單擊鼠標右鍵,在彈出的菜單中選擇“檢查”),然后在找到并選擇“Sources”,如下圖所示:

  1. 找到要調試的文件
    打開調試工具后,需要在工具的左側找到要調試的文件并單擊打開該文件,如下圖所示:

  2. 打斷點
    給代碼打斷點非常簡單,只需要在單擊要調試代碼前面的行號即可,若行號被標記為藍色,則說明已經成功打了斷點,如下圖所示:

在這里插入圖片描述
3. 斷點調試
打好斷點后,刷新頁面即可進入調試模式,代碼執行到斷點的位置會暫停,此時我們可以點擊頁面中的箭頭會按 F8 來使代碼繼續執行到下個斷點,如下圖所示:F10單步執行。

在這里插入圖片描述
調試過程中,會在調試工具的最右側的 Scope 欄顯示一些數據。此外,還可以在最右側的 Watch 欄中錄入要調試的變量名,這樣在調試過程中就能實時看到代碼運行中變量的變化。

  1. 逐語句執行
    在調試過程中,我們還可以選擇讓代碼逐句執行,只需要點擊下圖所示的按鈕,或者按 F10 即可:

逐句執行配合在 Watch 欄中錄入要調試的變量,能夠更清晰的看到變量在代碼運行過程中的變化:

在這里插入圖片描述

3、debugger關鍵字

除了可以借助瀏覽器的調試工具來給代碼設置斷點外,也可以使用 debugger 關鍵字在代碼中設置斷點(類似于 PHP 中的 die 和 exit),效果與在調試工具中設置斷點是一樣的,示例代碼如下:

在這里插入圖片描述

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

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

相關文章

FreeCAD開發樓梯參數化三維模型和鋼格柵

根據樓梯標準圖集開發各種樓梯。上行左轉&#xff0c;上行右轉&#xff0c;對應的欄桿也是配套2種。樓梯總成鋼格柵標準里的跨度和承載 扁鋼尺寸&#xff0c;輕松切換和修改參數。格柵綜合本來格柵上橫桿是冷軋扭鋼筋&#xff0c;先繪制一個圓柱&#xff0c;再做一個內切正方形…

【AcWing 836題解】合并集合

AcWing 836. 合并集合 【題目描述】 在查看解析之前&#xff0c;先給自己一點時間思考哦&#xff01; 【題解】 并查集是一種用于處理集合合并與查詢問題的數據結構&#xff0c;通常支持以下兩種操作&#xff1a; Find&#xff1a;查詢一個元素所在的集合。 Union&#xff1a…

MySQL鎖機制與MVCC原理剖析

在MySQL中&#xff0c;我們使用到了它的各種類鎖&#xff1b;按照它的維度&#xff0c;有各種鎖 從數據庫的操作粒度有&#xff0c;表鎖&#xff0c;行鎖。從數據庫的操作的類型&#xff0c;有讀鎖和寫鎖。性能上有樂觀鎖和悲觀鎖。 在上一篇文章中的事務隔離級別&#xff0c;需…

C++學習(線程相關)

目錄 一、線程庫thread 1.使用外部函數 2. 使用類的函數 3. 添加參數 二、線程庫 mutex 1.使用lock()方法 2.try_lock()方法 三、線程庫lock_guard 四、線程庫unique_lock 1.adopt_lock 2.defer_lock() 五、線程庫call_once 六、線程庫promise & future 七、c…

EPOLLONESHOT 深度解析:Linux epoll 的單次觸發機制

EPOLLONESHOT 深度解析&#xff1a;Linux epoll 的單次觸發機制 EPOLLONESHOT 是 Linux epoll 接口中的高級事件標志&#xff0c;用于實現精確的事件單次觸發控制。以下是其全面技術解析&#xff1a; 核心設計理念 #mermaid-svg-Xg5sCLdddqmKsvKG {font-family:"trebuchet…

深入解析MongoDB分片原理與運維實踐指南

深入解析MongoDB分片原理與運維實踐指南 技術背景與應用場景 隨著互聯網業務的高速發展&#xff0c;單節點MongoDB實例在數據量和訪問并發上都面臨瓶頸。為了解決數據存儲容量受限和讀寫性能下降的問題&#xff0c;MongoDB官方提供了分片&#xff08;Sharding&#xff09;方案&…

基于Django的天氣數據可視化分析預測系統

【86-Django】基于Django的天氣數據可視化分析預測系統&#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介 二、項目界面展示 三、項目視頻展示 四、技術架構 五、核心功能模塊 六、部署教程一、項目簡介 隨著全球氣候變化和極端天氣事件的頻發&am…

怎么放大單片機輸出電流

單片機作為電子系統的控制核心&#xff0c;其 I/O 口輸出電流通常較小&#xff08;一般在 10-20mA 左右&#xff09;&#xff0c;難以直接驅動繼電器、電機、大功率 LED 等需要較大工作電流的外設。因此&#xff0c;在實際應用中需通過特定電路放大單片機輸出電流&#xff0c;實…

站長百科類網站pbootcms模板(自適應手機端)+利于SEO優化(下載)

站長百科類網站pbootcms模板(自適應手機端)利于SEO優化 模板介紹&#xff1a; PbootCMS內核開發的模板&#xff0c;該模板屬于新聞資訊、新聞博客類企業使用&#xff01; 頁面簡潔簡單&#xff0c;容易管理&#xff0c;附帶測試數據&#xff01; 模板特點&#xff1a; 1、手工書…

【Golang】Go語言函數

Go語言函數 文章目錄Go語言函數Go函數特點一、函數的基本格式定義二、匿名函數三、自執行函數四、閉包函數五、延遲調用Go函數特點 無需聲明原型支持不定 變參支持多返回值支持匿名函數和閉包函數也是一種類型&#xff0c;一個函數可以賦值給變量不支持嵌套&#xff0c;一個包…

JAVA算法練習題day2

雙指針4.移動零二刷昨天的題&#xff0c;學習了新的數據結構StringBuilder。專為頻繁字符串拼接設計的可變字符串類。(https://blog.csdn.net/m0_73941339/article/details/145651287)二刷完昨天的題目&#xff0c;做到這題腦子已經轉不動了。做雙指針&#xff0c;一般雙指針初…

LLM2Rec-新國立-KDD2025-微調LLM獲得蘊含協同信息的embedding

文章目錄1. 背景與問題任務背景動機LLM2Rec 兩大步驟2. 方法2.1 Collaborative Supervised Fine-tuning&#xff08;CSFT&#xff09;2.2 Item-level Embedding Modeling2.2.1 從單向注意力 → 雙向注意力&#xff08;Bidirectional attention&#xff09;2.2.2 商品級別的對比…

前端學習9:JavaScript--對象與原型

前言&#xff1a;適合有基礎的同學入門嘗試 / 復習回憶。對象基礎&#xff1a;1.創建用戶對象const user {// 屬性&#xff08;鍵值對&#xff09;name: "小島",age: 20,isAdmin: false, }2.方法&#xff08;函數屬性&#xff09;sayHello() {console.log(你好&…

網絡:應用層

網絡&#xff1a;應用層 我們要知道&#xff0c;所有的問題解決都是在應用層。:happy: 協議是一種約定&#xff0c;也就是雙方約定好的結構化的數據。但是在讀寫數據時我們都是按字符串的方式來發送接受的&#xff0c;那么我們應該如和傳輸結構化的數據呢&#xff1f;應用層協…

rust-包和箱子

&#x1f4e6; 圖解 Rust 代碼組織層級 #mermaid-svg-fBDy1PDZZ6bi000z {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fBDy1PDZZ6bi000z .error-icon{fill:#552222;}#mermaid-svg-fBDy1PDZZ6bi000z .error-text{fi…

C++算法競賽篇(五)循環嵌套題型講解

C算法競賽篇&#xff08;五&#xff09;循環嵌套題型講解前言C循環嵌套題型講解第一題 包含數字的9第二題 求出 e 的值第三題 斐波那契數列第四題 第 n 小的質數第五題 水仙花數前言 前面的題型里我們認識了C里面的三大循環本篇博客我們開始講解C循環嵌套題型 我的個人主頁&am…

Gradio全解8——ChatInterfaceChatbot:聊天界面類與聊天機器人(3)——ChatInterface的多模態功能與附加輸入輸出

Gradio全解8——ChatInterface&Chatbot&#xff1a;聊天界面類與聊天機器人&#xff08;3&#xff09;——ChatInterface的多模態功能與附加輸入輸出8.3 ChatInterface的多模態功能與附加輸入輸出8.3.1 多模態功能1. 設置multimodal和fn參數2. 傳入MultimodalTextbox組件及…

php算法-- 關聯數組使用,優化sip賬號去重

文章目錄1 變量定義2. 核心特性code1 變量定義 類型&#xff1a;嵌套的關聯數組&#xff08;Nested Associative Array&#xff09;外層結構&#xff1a;[中繼ID > 賬號列表]鍵 (Key)&#xff1a;中繼ID&#xff08;字符串或整型&#xff09;值 (Value)&#xff1a;索引數組…

LLM 多語言數據集

多語言數據感覺主要還是fineweb和fineweb2, 其他數據都是主要針對特定語種比較多 101 Billion Arabic Words Dataset ClusterlabAi/101_billion_arabic_words_dataset 數據主要從e Common Crawl WET 中提取&#xff0c;并采用了創新的技術來進行去重和篩選&#xff0c;主要解決…

【HarmonyOS Next之旅】DevEco Studio使用指南(三十六) -> 配置構建(三)

目錄 1 -> 定制HAR多目標構建產物 1.1 -> 定義產物的deviceType 1.2 -> 定義C工程依賴的.so文件 1.3 -> 定義產物的資源 2 -> 配置APP多目標構建產物 2.1 -> 定義產物的APP包名和供應商名稱 2.2 -> 定義product的bundleName 2.3 -> 定義produc…