VSCode调试教程(2):逐行步进调试
发布时间 - 2020-07-02 00:00:00 点击率:次在要检查的代码之间导航很重要。如果去遍历代码的每一行,那将会是乏味且没有必要的。调试器提供了便捷的方法来查看重要的内容,并跳出无关紧要的代码块。让我们看看怎样在调试时进入、跳过和退出函数!
在上一篇中,我们研究了 VS Code 调试器,并在代码中添加了断点,还查看了本地状态。
这次,我们将学习如何逐行执行代码以及如何跳入和跳出函数调用。
获取代码
首先,让我们把上次的服务器修改的更加复杂。添加两个额外的函数:一个从请求中获取名称,另一个用于生成问候语。
你可以把下面的代码粘贴到 index.js中。
const http = require('http');
const url = require('url');
const hostname = '127.0.0.1';
const port = 3456;
const serverUrl = `http://${hostname}:${port}`
const getNameFromReq = (req) => {
const {name} = url.parse(req.url, true).query;
return name
}
const getGreeting = (name) => {
const greeting = `Hello, ${name}!`
return greeting
}
const server = http.createServer((req, res) => {
const name = getNameFromReq(req)
const greeting = getGreeting(name)
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end(`${greeting}\n`);
});
server.listen(port, hostname, () => {
console.log(`Server running at ${serverUrl}`);
});
该系列的代码可在 https://github.com/thekarel/debug-anything 获得
启动调试器
让我们启动调试器:使用调试工具栏或按 F5 并选择 Node.js:
你应该能够正常访问 http://127.0.0.1:3456/?name=Coco 并看到问候语。
如果你喜欢命令行,也可以用 curl http://127.0.0.1:3456\?name\=Coco 进行访问。
好的,现在服务器已启动并正常运行,让我们添加一个断点。没有断点,调试器将无法启动:
在第 21 行添加一个断点:
const name = getNameFromReq(req)
一步步的调试(Step by Step)
再次触发对 http://127.0.0.1:3456/?name=Coco 的请求,调试器将被激活并停在第 21 行的代码:
漂亮!现在让我们专注于调试工具栏:
首先是按钮的名字。从左到右按顺序如下(带有默认的 VS Code 快捷方式):
Continue、restart 和 stop 很简单,
会分别执行你所期望的操作:继续到下一个断点,重新启动进程,以及停止进程(和调试器)。
Step 与当前行上的函数调用相关:你可以单步执行某个函数调用(Step Over),也可以进入该函数调用(Step Into 在内部查看并调试)或着离开这个函数(Step Out)。Step-over 操作还允许你逐行执行代码,即使该行不是函数调用。
Step 命令仅控制你在调试器中看到的内容。所以 “Step Out” 或 “Over” 一个函数将会 仍然照常执行所有代码。调试器不会让你感到无聊,你能够更快地完成自己的主要工作。
Continue
Continue 将会运行代码,直到下一个断点或程序结束。一种调试的方法是预先在相关行上添加多个断点,然后用 continue 在它们之间跳转:
如果你已经知道哪些函数或行与你的目的有关,那么 Continue 操作将非常方便。调试器将在预定义的位置暂停,这时你可以对变量和调用栈进行检查。
Step Over
你可以将 Step Over 看作是在函数中逐行进行,但不进入函数调用。如果你对当前行中的函数调用内部逻辑不感兴趣,而只想查看局部变量如何随时间变化,用它就对了,例如:
Step Over 是略过说明性代码的好方法。
Step Into
当某行调用了你感兴趣的函数,并想要更深入地研究时,可以使用 Step Into。一旦进入代码块后,可以像往常一样进行调试(使用 continue、step 等命令)。
观察我们是怎样如何跳过 getNameFromReq,然后进入到 getGreeting 的:
Step Out
Step Out 与 Step In 相反:如果你不再对某个函数感兴趣,可以离开它。使用 “Step out” 将一次运行完该函数的剩余代码。
通过调试检查这两个函数之间的区别,我们逐行执行第一个函数,但是早早的就退出第二个函数:
现在,你应该对调试器工具栏有了更好的了解,如何着眼于重要的事情并跳过无关的部分。这些命令不仅可以节省你的时间,还可以使整个调试工作变得更加愉快!为什么不在你的项目中试试呢?
VSCode调试教程系列:
1、基础知识
2、逐行步进调试
英文原文地址:https://charlesagile.com/debug-javascript-typescript-debugger-navigating-with-steps
作者:Charles Szilagyi
相关教程推荐:vscode入门教程
# vscode
# JavaScript
# typescript
# node.js
# cURL
# continue
# 局部变量
# 栈
# JS
# github
# http
# https
# 调试器
# 让我们
# 你可以
# 将会
# 跳过
# 感兴趣
# 你应该
# 步进
# 自己的
# 问候语
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
公司网站制作价格怎么算,公司办个官网需要多少钱?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
如何在阿里云高效完成企业建站全流程?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Bootstrap CSS布局之列表
JavaScript如何实现路由_前端路由原理是什么
成都网站制作公司哪家好,四川省职工服务网是做什么用?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel如何为API编写文档_Laravel API文档生成与维护方法
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
如何在自有机房高效搭建专业网站?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel观察者模式如何使用_Laravel Model Observer配置
IOS倒计时设置UIButton标题title的抖动问题
Laravel如何实现API版本控制_Laravel版本化API设计方案
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
b2c电商网站制作流程,b2c水平综合的电商平台?
香港服务器租用费用高吗?如何避免常见误区?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
常州企业网站制作公司,全国继续教育网怎么登录?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
高端建站三要素:定制模板、企业官网与响应式设计优化
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
如何用PHP快速搭建高效网站?分步指南
Laravel如何处理异常和错误?(Handler示例)
Android GridView 滑动条设置一直显示状态(推荐)
进行网站优化必须要坚持的四大原则
Laravel如何处理文件下载请求?(Response示例)
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何注册花生壳免费域名并搭建个人网站?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
使用Dockerfile构建java web环境
深入理解Android中的xmlns:tools属性
,怎么在广州志愿者网站注册?
如何用狗爹虚拟主机快速搭建网站?

