草庐IT

javascript - 我的网站老是 IE 崩溃,无法调试

coder 2024-07-24 原文

我有一个网站突然开始崩溃 Internet Explorer。

网站加载并开始执行 javascript,但在某处机器爆炸了。我什至没有收到脚本错误,它只是崩溃了。我尝试使用内置调试器手动单步执行 js 的每一行,但当然问题不会发生。

如果我选择在应用程序崩溃时对其进行调试,我会看到以下消息。

iexplore.exe 中 0x6c5dedf5 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000090。

调用堆栈中的前 5 项如下所示

VGX.dll!6c5dedf5()
[Frames below may be incorrect and/or missing, no symbols loaded for VGX.dll]
VGX.dll!6c594d70()
VGX.dll!6c594f63()
VGX.dll!6c595350()
VGX.dll!6c58f5e3()
mshtml.dll!6f88dd17()

VGX.dll 似乎是 vml 渲染器的一部分,实际上我正在使用 VML。我并不感到惊讶,因为我在使用 vml 时遇到了很多问题,属性必须按特定顺序设置,有时当你将元素附加到 dom 时你不能设置属性,反之亦然(顺便说一句,所有未记录的东西)但是问题通常可以在调试时重现,但现在不行:(

无插件模式下也会出现该问题。

有没有比反复试验更好的方法来解决这个问题?

编辑: 添加一个控制台,输出对 DOM 的每一个可疑修改,使得这个问题只是偶尔发生。 (控制台也在同一页面上用 javascript 实现,即使在崩溃后我也能看到输出,因为窗口仍然可见)显然这似乎是某种竞争条件。

我设法进一步追踪它,当您在刚刚添加一个对象后过快地从 DOM 中删除它时,它似乎会发生。 (很可能只适用于具有某些特殊属性的 vml 元素,没有进一步尝试)并且不能通过在 removeChild 前面添加死循环来修复(无论如何都是非常糟糕的解决方案),页面必须由浏览器在addChild 之后就可以调用removeChild 了。叹息

最佳答案

(老问题但很重要)

我有一个非常相似的问题 - 包括很多复杂的 VML(来自 Raphael),而且它看起来几乎无法调试。

事实上,事实证明最简单的低技术方法是最好的。这是一个显而易见的方法:我写在这里是因为有时当面对一个令人生畏的问题时,人们最后才想到明显、简单的解决方案。

所以,简单的老式调试:很多alert("1");, alert("2"); 等在每次远程要求或之后在我的代码中进行复杂的调用,提供 super 简单可靠的断点,这些断点不依赖于任何可能自行崩溃的功能(例如开发人员工具)。然后,只需在它崩溃之前查看您得到的是哪个数字警报——问题一定出现在该警报和下一个警报之间。

添加更多警报,直到您将其缩小到确切的行。在我的例子中,它实际上与复杂的 VML 无关 - 它是一个 for 循环,由于某种原因只在 IE7 上无限继续。

关于javascript - 我的网站老是 IE 崩溃,无法调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3948913/

有关javascript - 我的网站老是 IE 崩溃,无法调试的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  3. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  7. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  8. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  9. ruby - 无法覆盖 irb 中的 to_s - 2

    我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)

  10. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

随机推荐