写代码或者做网络请求调试的时候,很多人会用到调试工具里的“单步执行”和“单步跳过”功能。看起来都是一步一步走,但实际用起来差别挺大,搞混了反而浪费时间。
单步执行:深入每一步细节
当你点击“单步执行”(Step Into),调试器会进入当前行调用的函数内部。比如你这行代码调用了另一个方法,它不会跳过,而是直接钻进去,从那个方法的第一行开始继续执行。
举个生活中的例子:你在做菜,食谱上写着“加入自制酱料”。如果选择“单步执行”,你就得停下来,先去看酱料是怎么做的,一步步跟着熬,直到酱料完成才回到主菜流程。
function calculateTotal(price, tax) {
return price + getTaxAmount(price, tax);
}
function getTaxAmount(p, t) {
return p * t;
}
调试到 getTaxAmount(price, tax) 这一行时,点“单步执行”,就会跳进 getTaxAmount 函数里面,看它是怎么算的。
单步跳过:只关心结果,不深究过程
而“单步跳过”(Step Over)就简单多了。它会把当前行完整执行完,不管里面有没有函数调用,都不会进去,直接走到下一行。
还是做菜的例子,“加入自制酱料”这一步,你选“单步跳过”,就默认酱料已经准备好了,直接加进去,继续下一步,不关心它是怎么熬的。
let total = calculateTotal(100, 0.1); // 单步跳过:直接得到结果,不进函数
在调试网络请求时特别实用。比如你调了一个封装好的 fetchUserData() 方法,你只是想看看返回的数据对不对,没必要一步步看它怎么拼URL、怎么加header。这时候用“单步跳过”更高效。
什么时候该用哪个?
如果你怀疑某个函数内部出了问题,比如计算错误或参数传错了,就用“单步执行”,一层层钻进去查。
但如果只是想快速走完整个流程,确认整体逻辑没问题,或者那个函数是你信得过的公共方法,就用“单步跳过”,省时间。
在抓包分析或调试接口调用链时,这两个操作配合使用最有效。比如先“单步跳过”掉无关的日志记录,再“单步执行”进入核心鉴权逻辑,精准定位问题。