首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js debugger 怎么用

JavaScript 调试器是一种强大的工具,用于在开发过程中识别和修复代码中的错误。以下是使用 JavaScript 调试器的基本步骤和相关概念:

基础概念

  1. 断点(Breakpoints):在代码的特定行设置断点,程序执行到该行时会暂停。
  2. 单步执行(Step Over/Into/Out):允许你逐行执行代码,或者进入函数内部,或者跳出当前函数。
  3. 观察变量(Watch):实时查看变量的值和状态。
  4. 调用栈(Call Stack):显示当前执行路径,帮助理解代码的执行流程。

使用方法

大多数现代浏览器(如Chrome、Firefox)都内置了开发者工具,其中包含了JavaScript调试器。

在 Chrome 中使用调试器

  1. 打开开发者工具
    • F12Ctrl+Shift+I(Windows/Linux),或 Cmd+Option+I(Mac)。
  • 进入 Sources 面板
    • 在开发者工具中选择 "Sources" 标签。
  • 设置断点
    • 在左侧的文件列表中找到你的JavaScript文件。
    • 点击代码行号旁边的空白区域设置断点。
  • 开始调试
    • 刷新页面或触发相关事件,程序会在断点处暂停。
    • 使用工具栏上的按钮进行单步执行、进入函数、跳出函数等操作。
  • 观察变量
    • 在右侧的 "Scope" 面板中查看当前作用域内的变量值。

示例代码

假设你有以下JavaScript代码:

代码语言:txt
复制
function calculateSum(a, b) {
    let sum = a + b;
    return sum;
}

let result = calculateSum(5, 10);
console.log(result);

你可以在 calculateSum 函数内部的 let sum = a + b; 这一行设置断点,以检查 absum 的值。

优势

  • 即时反馈:可以立即看到代码修改的效果。
  • 精确控制:能够逐行执行代码,深入了解程序运行状态。
  • 错误定位:快速找到并修复代码中的逻辑错误或运行时错误。

应用场景

  • 新功能开发:确保新添加的功能按预期工作。
  • 性能优化:分析代码执行效率,找出瓶颈。
  • bug修复:定位并解决复杂的问题。

常见问题及解决方法

问题:调试器没有在预期的断点处暂停。 原因

  • 断点可能设置在不可执行的代码行(如注释或空行)。
  • JavaScript 文件可能未被正确加载或执行。
  • 可能存在代码压缩或混淆,导致行号不匹配。

解决方法

  • 确保断点设置在有效的代码行。
  • 检查网络请求确认JavaScript文件已成功加载。
  • 使用未压缩的源代码进行调试,或在开发者工具中启用“Pretty Print”功能。

通过熟练使用JavaScript调试器,你可以大大提高代码质量和开发效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JS逆向 | 无限Debugger之淘大象

    今天继续和大家研究JS逆向,不少小伙伴在JS逆向的时候遇到过无限debugger的反爬,今天就拿一个网站练练手感受下无限debugger。...分析加密 很明显这个js文件经过一定程度的混淆,现在有两种方法解决: 一是直接扣代码,绕过debugger之后扣这个代码不要太简单。 二是通读加密,直接改写成python加密。...这里比较明显的是js中的两段代码: ?...(s): a = md5(s.encode()).hexdigest() return a 到这里这次的分析的网站 -- 淘大象 就被我们攻克了,这次的网站加密不是很难,主要难点是分析请求时的无限debugger...其实其他同类型的网站还有很多,我推荐大家阅读下面的文章,文章提到了其他解决debugger的方法希望对你有帮助。

    3.2K30

    JS逆向 | 无限Debugger之淘大象

    置顶公众号 今天继续和大家研究JS逆向,不少小伙伴在JS逆向的时候遇到过无限debugger的反爬,今天就拿一个网站练练手感受下无限debugger。...分析加密 很明显这个js文件经过一定程度的混淆,现在有两种方法解决: 一是直接扣代码,绕过debugger之后扣这个代码不要太简单。 二是通读加密,直接改写成python加密。...这里比较明显的是js中的两段代码: ?...比对两种方式,通过python方法改写更加方便,主要代码如下: 到这里这次的分析的网站 -- 淘大象 就被我们攻克了,这次的网站加密不是很难,主要难点是分析请求时的无限debugger。...其实其他同类型的网站还有很多,我推荐大家阅读下面的文章,文章提到了其他解决debugger的方法希望对你有帮助。

    2K10

    JS逆向:常见无限Debugger以及绕过方法

    无限debbugger不会真正得死循环,而是有规律得执行逻辑,一般用定时器一、种类划分1.1 按照代码逻辑1.1.1 无限循环while 循环for 循环1.1.2 递归包含debugger 的函数调用自身...1.1.3 方法间的循环调用1.1.4 计时器JS中的定时器 是setInterval ,参数:第一个参数是要定时执行的代码,第二个参数是时间。...[];}二、绕过debugger方法2.1 取消所有的断点如图所示,但这样操作的弊端就是,其他所需要的断点均不能使用2.2 使用一律不在此处暂停在 JS 代码 debugger 行数位置,鼠标右键点击一律不在此处暂停...,对应行前面会添加一个橙色的断点标志2.3 添加条件断点在 JS 代码 debugger 行数位置,鼠标右键添加 条件断点,其中条件 设为 false 2.4 置空无限debugger产生的原因ff`...= function(){}2.5 修改响应文件把JS文件保存到本地修改,修改范围主要是将debugger相关的代码删除或者改写,可以使用文件替换、抓包工具拦截方式[其余绕过方法可见​] http

    5.5K60

    JS箭头函数三连问:为何用、怎么用、何时用

    在现代JS中最让人期待的特性就是关于箭头函数,用=>来标识。箭头函数有两个主要的优点:其一是非常简明的语法,另外就是直观的作用域和this的绑定。...什么才是箭头函数 JS的箭头函数大概就像python中的lambda(python定义匿名函数的关键字)和ruby中的blocks(类似于闭包)一样。...例如在Vue.js中,有一种通用模式,就是使用mapState将Vuex存储的各个部分,直接包含到Vue组件中。...曾经流行一种趋势,用class类的语法和箭头函数,为其自动绑定方法。比如:事件方法可以使用,但是仍然绑定在class类中。...总结 箭头函数是JS语言中十分特别的属性,并且使很多情形中代码更加的变化莫测。尽管如此,就像其他的语言特性,他们有各自的优缺点。

    2.6K20

    JS逆向 | 分析某监测网站的 debugger 反爬措施

    建议收藏 | 最全的 JS 逆向入门教程合集 目标网站 IGh0dHBzOi8vd3d3LmFxaXN0dWR5LmNuLw0K 这个网站的加密比较简单的,网上也有不少关于这个网站加密的分析例子,所以关于这个网站的正文加密...JS逆向 | 无限Debugger之淘大象 除了这类 debugger 样例外,还有一类反调试的样例是通过时刻监控浏览器的控制台是否打开来控制数据接口的读取的。 网站分析 现在我们来看看。...图2-3 并且在【图2-3】所示位置用判断语句用来控制页面的加载。 并且在通过检索,我们找到了endebug的代码。【图2-4】 ? 图2-4 解密出来的明文中的确是对控制台的状态进行了检测。...我们来回忆一下正常的无限debugger场景:一个无限循环的方法中包含了可以被执行的debuger语句,我们通过置空法是下次循环要执行的debugger语句(说明下次循环的debug还未执行)替换为空了...扫码查看JS逆向课程 同时这里也感谢「花哥」 对我的帮助以及对本次案例提供的技术支持与解答。 撒花![ 完 ]

    1.9K10

    用 Debugger 你能读懂各种源码

    所以,不管是调试库的源码还是业务代码,不管是调试 Node.js 还是网页,都推荐用 Debugger 打断点,别再用 console.log 了,就算想打印日志,也可以用 LogPoint。...比如 vue,关联了 sourcemap 之后,我们能直接调试 ts 源码: nest.js 也是: 不用 sourcemap 的话,想搞懂源码,但你调试的是编译后的代码,怎么读懂呢?...读懂一行 前面说的 Debugger、Performance、SourceMap 只是调试代码的工具,那会了调试工具,依然读不懂代码怎么办呢? 我觉得这是不可能的。 为什么这么说呢?...但 Debugger 只能看到一条执行路径,可以用 Performance 录制代码执行的全流程,然后再结合 Debugger 来深入其中一条路径的执行细节。...掌握基于 Debugger、Performance、SourceMap 等调试代码之后,各种网页和 Node.js 代码都能调试,各种源码都能读懂! (摘自我的小册 《前端调试通关秘籍》)

    1K70

    怎么防止同事用Evil.js的代码投毒

    视频移步B站最近Evil.js被讨论的很多,项目介绍如下图片项目被发布到npm上后,引起了激烈的讨论,最终因为安全问题被npm官方移除,代码也闭源了作为一个前端老司机,我肯定是反对这种行为,泄私愤有很多种方式...还不如离职的时候给老板一个大逼兜来的解恨今天我们来讨论一下,如果你作为项目的负责人,如何甄别这种代码下毒欢迎加入前端学习,一起上王者,交个朋友下毒手法最朴实无华的下毒手法就是直接替换函数,比如evil.js...:"llll"}'node 的vm模块node中也可以通过vm模块创建一个沙箱来运行代码,教程可以看这里,不过这对我们代码的入侵性太大了,适用于发现bug后的调试某段具体的代码,并且没法再浏览器里直接用const...ShadowRealm()console.log( sr.evaluate(`JSON.stringify({name:'Illl'})`) )Object.freeze我们还可以项目代码的入口处,直接用Object.freeze.../anti-evil.js"><script src=".

    3.7K20

    怎么防止同事用Evil.js的代码投毒

    最近Evil.js被讨论的很多,项目介绍如下项目被发布到npm上后,引起了激烈的讨论,最终因为安全问题被npm官方移除,代码也闭源了作为一个前端老司机,我肯定是反对这种行为,泄私愤有很多种方式,代码里下毒会被...还不如离职的时候给老板一个大逼兜来的解恨今天我们来讨论一下,如果你作为项目的负责人,如何甄别这种代码下毒欢迎加入前端学习,一起上王者,交个朋友下毒手法最朴实无华的下毒手法就是直接替换函数,比如evil.js...llll"}'复制代码node 的vm模块node中也可以通过vm模块创建一个沙箱来运行代码,教程可以看这里,不过这对我们代码的入侵性太大了,适用于发现bug后的调试某段具体的代码,并且没法再浏览器里直接用const...ShadowRealm()console.log( sr.evaluate(`JSON.stringify({name:'Illl'})`) )复制代码Object.freeze我们还可以项目代码的入口处,直接用Object.freeze.../anti-evil.js"><script src=".

    3.1K20

    怎么用Node.js创建HTTPS服务器?

    怎么用Node.js创建HTTPS服务器? HTTPS已经无所不在,作为开发者,我们经常需要访问或者使用HTTPS服务器。本文重要介绍了如何用 Node.js 在本地创建一个HTTPS开发服务器。...HTTPS服务器.jpg 要创建一个HTTPS服务器,你需要两样东西:SSL证书和Node.js内置的https模块。 我们先从SSL证书开始。...将这些文件放在与Node.js服务器文件相同的目录中。...如下是一个hello world示例(https和http模块之间最大的区别是options参数): 2.jpg 要启动https服务器,请在终端上运行 node app.js(这里,app.js是文件的名称...文件里,你可以在终端中运行 nodeindex.js ,然后你可以访问 https://localhost:3000 访问这个页面了。

    6.5K00

    【JS 逆向百例】无限debugger绕过,某政民互动数据逆向

    我们尝试抓包,打开开发者工具,刷新一下页面,会发现此时页面被断到 debugger 的位置,点击下一步,又会被断到另一个 debugger 的位置,这种情况就是无限 debugger,无限 debugger...,将原来的含有无限 debugger 的函数给替换掉,这种方法适用于知道无限 debugger 函数所在的具体 JS 文件,重写 JS 文件,使其不含有无限 debugger 的函数,利用第三方工具将原来的...4.方法置空 直接在 Console 中将无限 debugger 的函数重写置空也可以破解无限 debugger,缺点是刷新后失效,基本上不太常用。...完整代码仓库地址:https://github.com/kgepachong/crawler/ JS 加密代码 isNotNull = function (obj) { if (obj ===...', 'r', encoding='utf-8') as f: js = f.read() encrypted_parameters = execjs.compile(js).call

    1.5K00
    领券