无法在 chrome 开发者工具中设置断点
Unable to set breakpoints in chrome developer tools
当我使用 chrome 开发人员工具设置断点时,它不会准确地设置在我想要设置的行中。它将其更改为另一行。为什么会这样?如果我想在我想要的行中设置断点,我该怎么办?
这是视频:https://drive.google.com/file/d/0B7NuLgKMVzkgUHhaclM0YW1BSEU/view?usp=sharing
调试器允许您在 语句 上添加断点。这是通过单击语句开始的行号来实现的。您不能在其中的表达式上添加断点。
例子
以下代码是您视频中 Angular 代码的模型:
$stateProvider.state("key1", {
url: "url1",
controller: "controller1",
templateUrl: "templateUrl1"
}).state("key2", {
url: "url2",
controller: "controller2",
templateUrl: "templateUrl2"
});
只有 一个 语句,从第 1 行开始到第 9 行结束。您可能正在调用链接在一起的两个函数,但它们是一个语句。
注入 debugger/trace 语句
您可以通过将 debugger
语句添加到 state
函数中来解决此限制,这样它会在每次链式函数调用时中断。你可以 运行 类似的东西进入 Console/Snippet:
var oldState = $stateProvider.state;
$stateProvider.state = function() {
debugger;
return oldState.apply(this, arguments);
}
这将保存对旧函数定义的引用,然后用 debugger
语句覆盖当前定义。如果你不关心真正的功能,你可以在那里结束它。但是,要继续正常执行,我们可以使用 apply
调用 origin 函数,它指定了要传入的上下文和参数。您可以阅读详细解释 here.
现在这将在每次 state
执行时中断。如果您只是想针对特定情况中断怎么办?那么你可以在 debugger
语句中添加一个 Conditional Breakpoint,如下所示:
现在代码只会在 key
为 'key2' 时中断。
调试器语句可能会干扰您的执行流程,因此您可以将其替换为 console.log
语句或其他任何语句。在这种情况下可以省略条件逻辑。
当我使用 chrome 开发人员工具设置断点时,它不会准确地设置在我想要设置的行中。它将其更改为另一行。为什么会这样?如果我想在我想要的行中设置断点,我该怎么办?
这是视频:https://drive.google.com/file/d/0B7NuLgKMVzkgUHhaclM0YW1BSEU/view?usp=sharing
调试器允许您在 语句 上添加断点。这是通过单击语句开始的行号来实现的。您不能在其中的表达式上添加断点。
例子
以下代码是您视频中 Angular 代码的模型:
$stateProvider.state("key1", {
url: "url1",
controller: "controller1",
templateUrl: "templateUrl1"
}).state("key2", {
url: "url2",
controller: "controller2",
templateUrl: "templateUrl2"
});
只有 一个 语句,从第 1 行开始到第 9 行结束。您可能正在调用链接在一起的两个函数,但它们是一个语句。
注入 debugger/trace 语句
您可以通过将 debugger
语句添加到 state
函数中来解决此限制,这样它会在每次链式函数调用时中断。你可以 运行 类似的东西进入 Console/Snippet:
var oldState = $stateProvider.state;
$stateProvider.state = function() {
debugger;
return oldState.apply(this, arguments);
}
这将保存对旧函数定义的引用,然后用 debugger
语句覆盖当前定义。如果你不关心真正的功能,你可以在那里结束它。但是,要继续正常执行,我们可以使用 apply
调用 origin 函数,它指定了要传入的上下文和参数。您可以阅读详细解释 here.
现在这将在每次 state
执行时中断。如果您只是想针对特定情况中断怎么办?那么你可以在 debugger
语句中添加一个 Conditional Breakpoint,如下所示:
现在代码只会在 key
为 'key2' 时中断。
调试器语句可能会干扰您的执行流程,因此您可以将其替换为 console.log
语句或其他任何语句。在这种情况下可以省略条件逻辑。