标签: javascript-debugger

如何在Chrome JS控制台中访问内容脚本的沙盒环境

如果我在Chrome开发者工具中打开JavaScript控制台来调试扩展程序的内容脚本,我就不会获得内容脚本的上下文.例如,jQuery是不可访问的,除非我去调试器并设置断点,否则我无法访问我的全局变量.

我只是错过了一些东西吗?能够从JS控制台检查我的全局变量或调用jQuery会很棒.

javascript-debugger google-chrome-extension google-chrome-devtools

5
推荐指数
1
解决办法
1338
查看次数

console.log中的错误?

可能重复:
Chrome的JavaScript控制台是否懒于评估数组?

我尝试以下代码:

var myList = new Object();
var item   = new Object();
item.text  = "item-1";
myList[3]  = item;

console.log(myList);
console.log(myList[3].text);

// Assign another object to the same entry
var item2   = new Object();
item2.text  = "item-2";
myList[3]  = item2;

console.log(myList);
console.log(myList[3].text);
Run Code Online (Sandbox Code Playgroud)

结果很奇怪:

* Object
  * 3: Object
      text: "item-2"

item-1

* Object
  * 3: Object
      text: "item-2"

item-2
Run Code Online (Sandbox Code Playgroud)

但是 - 如果我在一段时间后执行第二部分(使用setTimeout),并展开第一个对象,我说得对,即:

* Object
  * 3: Object
      text: "item-1"

item-1

* Object
  * 3: Object
      text: "item-2"

item-2
Run Code Online (Sandbox Code Playgroud)

我发现分享它很重要,因为我认为可以浪费大量时间来试图理解他的代码中的错误.如果有人提到一个开放的bug或其他东西 - …

javascript console firefox google-chrome javascript-debugger

5
推荐指数
2
解决办法
1936
查看次数

JS调试器是否会挂起整个JS事件循环?

我有一些非常奇怪的行为.我有以下JQuery:

myElement.fadeOut(100);
Run Code Online (Sandbox Code Playgroud)

存在某种竞争条件,因此该元素最终不会被隐藏.如果我在该行上放置一个调试器并逐步执行代码,它就可以正常运行并且元素会淡出并隐藏起来.称之为Heisenbug.

我的问题不是关于竞争条件本身.鉴于JavaScript运行时的性质,我想知道如何实现这一点.根据我的理解,以下谓词是正确的:

  1. fadeOut()由JQuery animate()实现
  2. animate()由一系列setTimeout()调用实现
  3. setTimeout() 在某个时间点调度队列中函数的执行
  4. 当事件到达队列的开始时,执行该功能.
  5. 只有一个事件循环,它按顺序执行.
  6. 在任何给定的时间点,只有一个函数/路径通过callstack正在执行.

鉴于我在调试器中单步执行某个函数,必须暂停执行,并且不能执行其他函数.

我无法看到在这种情况下如何出现竞争条件.您能否建议在调试和非调试代码之间执行的可能性如何?

javascript debugging javascript-debugger

5
推荐指数
1
解决办法
164
查看次数

IE9调试器 - 在"脚本"选项卡上,调试时"其他"部分中的脚本是什么?

它们通常被命名为"Script Block(#)",其中井号是任意数字,但我也在"其他"部分中看到了空白的html文档(仅限html和body标签).更具体地说,我所指的"其他"部分可以在Internet Explorer 9调试器的"脚本"选项卡中"开始调试"按钮左侧的下拉列表中找到.(假设您在生成"其他"的网页上)此外,您必须正在调试才能看到"其他"部分.

我有一个带有一些插件的应用程序,我假设这些插件会导致那些"其他"显示出来."脚本块"实际上是生成的并且没有被删除,所以它慢慢开始占用内存,直到我必须刷新页面.在不经意地搜索网页后,我决定来这里,希望能更深入地了解为什么要创建它们以及它们到底是什么?

对不起以上,但我真的不知道一个更好的方式来形容我谈论可怕的描述,我想这就是为什么我在这里...

javascript debugging javascript-debugger internet-explorer-9

5
推荐指数
1
解决办法
525
查看次数

Firefox调试器从if块直接跳转到else块

我想知道下面显示的序列是如何发生的.

这是有问题的功能:

WebSocketConnector.prototype.sendMessage = function(message) {
    if (socket !== null) {
        socket.send(message);
        console.log('Sent: ' + message);
    } else {
        alert('Failed to send message. WebSocket connection not established.');
    }
};
Run Code Online (Sandbox Code Playgroud)

以下是调试此函数的调用时发生的情况:

1.从第32行开始.

如果条件

2.继续前进到第33行.

if块的第一行

3.再次步入,进入第34行.

if块的第二行

再来一次,前进到36号线???

else块的第一行

- >如何控制可能直接从if块的最后一行到else块的第一行?

一些重要的事实:

  1. 这里没有遗漏的步骤.
  2. 这真的发生了.
  3. 我只是sendMessage从一个地方打电话,我正在记录这个电话.sendMessage日志中没有未计入的调用,因此我不认为异步是一种解释.
  4. 我也尝试使用Firebug调试器做同样的事情,同样疯狂的事情发生了.

编辑/后随

如果我将一个console.log语句添加到else块的第一行(将警报按下到第37行),控件将从第34行直到第37行(跳过console.log语句).

此外,我应该提到,即使直接进入该代码,也不会出现任何警报.

编辑2

这是sendMessage函数的间距和CRLF :

在此输入图像描述

javascript firefox firebug javascript-debugger firefox-developer-tools

5
推荐指数
1
解决办法
637
查看次数

对未捕获的范围错误进行故障排除:超出最大调用堆栈大小

我仅在 Mac 计算机上的 Safari 和 Chrome 中收到此错误,但无法在其他浏览器或 Windows 上重现。主要问题 - 没有关于哪个功能导致问题的信息。异常发生前没有最近调用的堆栈跟踪。甚至“异常暂停”设置也不起作用。它不会在此异常上暂停,仅将信息放入控制台。

如何排除导致问题的原因、在哪个函数上崩溃、崩溃前的调用堆栈是什么?或者如何记录所有函数调用(重要提示,分析器应在页面加载后立即启动)。

javascript debugging javascript-debugger google-chrome-devtools

5
推荐指数
1
解决办法
3437
查看次数

如何获得已优化的变量的值?

在Javascript执行期间,某些变量可以被“优化”。因此,此类变量的值在调试时无法检查(用户文档)。如果尝试评估变量,变量视图将显示(优化)消息,并且控制台将引发以下错误:

Error: variable has been optimized out
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在Firefox中强制执行此类变量的评估或禁用此优化?

javascript debugging firefox javascript-debugger

5
推荐指数
2
解决办法
8301
查看次数

ios无法获取BatchedBridge,请确保您的捆绑包包装正确

使用9.2版的xCode在模拟器上运行应用程序时出现此错误 在此处输入图片说明

我尝试了在Stack Overflow和Github S1 S2 S3 S4上提到的其他解决方案,但大多数解决方案都是针对android提到的。

PS此项目还包括纯脚本代码,在此处进行了解释将Pure Script集成到您的React Native项目中

javascript-debugger ios reactjs react-native

5
推荐指数
2
解决办法
2468
查看次数

调试修改某些特定画布元素的 JS

我正在尝试使用 Chrome 开发者工具调试画布元素。
从这里:
如何检查画布框架
我可以看到有一个实验性功能可以执行类似的操作,但已被删除。

有没有办法搜索/查找负责修改某些特定画布元素的JS代码?这样至少我们可以在 JS 中添加断点

javascript-debugger google-chrome-devtools html5-canvas

5
推荐指数
1
解决办法
2382
查看次数

为什么 chrome 会进入被忽略的文件?

我试图单步执行单个文件,但调试器不断单步执行其他/第三方 js 脚本。我将它们添加到我的忽略列表中,它甚至说“此脚本位于调试器忽略列表中”,但它仍然会逐步执行它们。

如果 chrome 仍然单步执行忽略列表,那还有什么意义呢?

有什么方法可以让我单步执行我想要单步执行的文件吗?当我必须单步执行数十个杂项文件时,调试是一场噩梦。

javascript debugging google-chrome javascript-debugger

5
推荐指数
0
解决办法
267
查看次数