文章目录

  • 一、前后端:后端以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…