【问题标题】:Keep track of Variable throughout debugging在整个调试过程中跟踪变量
【发布时间】:2017-02-02 13:34:06
【问题描述】:

有一个由内置库创建的变量,该变量作为参数传递给许多函数。我想在调试期间随时跟踪该变量。我正在使用 Chrome 调试工具。某种机制,即使我进入另一个函数或文件,我也可以键入属性的名称,并且可以举例说明它的属性(甚至可能在它创建之前?)。我想这样做是因为没有正确创建传递给其他函数的对象,我想看看它何时/如何在每个步骤中被修改。谢谢!

这里有一些上下文可以向您展示跟踪变量的复杂程度。

模块 1(比如说 a.js)

...
this.Content = "some initial value that is modified probably"

render: function(r){
     ...
     m = this.Content;
     renderControl(a,m,b);
     ...
}

renderControl: function(r,m,c){
     ...
     Module2.Render(m);
     ...
}

....

模块 2(比如说 b.js)

...

Render: function(C){
...
    helper.doSomething(C);
...
}

...

模块 3(比如说 c.js)

...

doSomething: function(C){...};

...

所以在模块 1 中,有一个类的属性(我假设)正在以某种方式创建和更改,然后它被传递给模块 2 和模块 3,然后来回传递。在 C 中,我收到一个错误,即传递的值 (C) 没有应该存在的方法(从模块 1 开始)。

【问题讨论】:

  • 你的变量是可变的吗?
  • 非常肯定,它是一个内置库中的对象。

标签: javascript debugging


【解决方案1】:

好的,如果您的变量是可变的,那么只需将其设置为全局变量

var myGlobalVar = varIwantToTrack;

您将能够随时查看 myGlobalVar

【讨论】:

  • 它在一个内置库中,所以可以编辑他们的代码来包含它吗?另外,由于有多个文件,这会起作用吗?
  • 调试器是在代码运行时运行的,所以如果你在被执行的函数范围内没有变量,调试器就无法显示它的值。。这不神奇啊啊,没有你不需要修改你的库,因为正如你所说,变量被传递给你的函数,所以你只需要在这些函数中分配 gobal 变量。根据多文件问题,如何加载这些文件?
  • 我编辑了我的问题以显示更多上下文。这些文件不是我的,它们(我认为)是显示 UI 控件的一部分。因此,当单击控件时,会加载库以显示控件。
  • 另一方面,如果调试器不显示变量,则表示它不在正在执行的函数的范围内,这意味着正在执行的函数无法访问该变量,这意味着你的变量不能被那个函数修改,这意味着在它没有改变的时候寻找那个变量是不值得的
  • 好的,所以你包含带有脚本标签的文件。如果没有 pb,则可以从任何文件访问全局变量
猜你喜欢
  • 2016-02-19
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多