JS调试(第39课)

目前使用JS来执行恶意功能或者下载恶意组件的情况已经很平常了,所以这里介绍一下关于js的调试方法。

 

大部分的js脚本都是经过混淆或者加密的,静态分析的话根本不可能,一般在分析之前都需要对js脚本进行一下美化,推荐JavaScript美化网站:http://jsbeautifier.org/

 

下面进入正题,讲解js的调试方法。

 

一、Alert方法

在互联网刚刚起步的时代,网页前端还主要以内容展示为主,浏览器脚本还只能为页面提供非常简单的辅助功能的时候。那个时候,网页主要运行在以IE6为主的浏览器中,JS的调试功能还非常弱,只能通过内置于Window对象中的alert方法来调试,在网页中按F12键,点击Console按钮。

Console

 

直接在这里输入想要查看的值即可。如下图所示,我们输入var a = ‘abc’;alert(a);浏览器即弹出对话框,显示变量a的值。alert

 

二、Console方法

随着js能做的事情越来越多,责任越来越大,地位也越来越重要,传统的alert调试方法渐渐的跟不上技术前进的节奏,alert调试方式弹出的调试信息,窗口不太美观,而且会遮挡页面内容,另外,使用alert方法,必须在程序逻辑中添加alert(xxx)的语句才能正常工作,比较麻烦,对于开发人员来说,后期还要手动清除这些代码。为了避免这种手续,出现了console的调试方法。

 

和alert方法类似,只是将语句换成console即可。console

 

也可以在js恶意脚本中添加console语句,输出想要查看的目标值。

 

三、JS断点调试

JS断点调试,即是在浏览器开发者工具中为JS代码添加断点,让js执行到某一位置停止,方便我们对该处的代码进行分析和逻辑处理。为了方便说明,我们先准备一段示例代码:

JS断点调试

 

使用sources断点

 

方法一:使用前面说的,在源码中添加alert或者console,添加后如下所示:

sources断点

 

结果为:alert或者console

 

方法二:点击F12,找到sources菜单,在左侧树中找到对应的文件,然后点击行号来添加或删除断点。

sources菜单

 

设置完断点后,刷新页面,程序将在断点处停下来,在sources界面中会看到当前作用域中所有的变量和值。sources

 

如果想一行一行的跟踪代码,可以使用浏览器提供的调试按钮:浏览器提供的调试按钮

 

这六个按钮的功能依次为:

  • Pause/Resume script execution:暂停/恢复脚本执行(程序执行到下一断点停止)。
  • Step over next function call:执行到下一步的函数调用(跳到下一行)。
  • Step into next function call:进入当前函数。
  • Step out of current function:跳出当前执行函数。
  • Deactive/Active all breakpoints:关闭/开启所有断点(不会取消)。
  • Pause on exceptions:异常情况自动断点设置

 

通过使用这几个键,就可以像调试可执行程序一样进行调试了。

 

需要注意的一点是,直接在代码区打印变量值的功能是在较新版本的Chrome浏览器中才新增的功能,如果你还在使用较老版本的Chrome浏览器,可能无法直接在断点的情况下查看变量信息,此时你可以将鼠标移动到变量名上短暂停顿则会出现变量值。也可以在右边Watch面板中输入变量值来查看,此方法同样适用于表达式。此外,你还可以在断点情况下,切换到Console面板,直接在控制台输入变量名称,回车查看变量信息。Watch面板

 

 

四、debugger方法

这种方法是在源程序中添加“debugger;”语句,这样当代码执行到该语句的时候就会自动断下来,接下去的操作就和上面介绍的断点调试方法类似了。debugger

头像
  • ¥ 79.0元
  • 市场价:99.0元
  • ¥ 498.0元
  • 市场价:498.0元
  • ¥ 199.0元
  • 市场价:899.0元
  • ¥ 398.0元
  • 市场价:498.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: