Flash Builder Mac Breakpoints生成NullPointerExceptions

时间:2011-08-24 21:33:44

标签: actionscript-3 debugging flash-builder nullpointerexception

我有一个复杂的,预先存在的Actionscript项目,可以在我现在的雇主那里工作。该项目最初是使用FlashDevelop创建的,对于我作为Mac用户而言,这不是一个选项。我可以成功构建项目并将其部署到其他人。它按预期运行。

问题在于调试。我不能让它发挥作用。我相信Windows机器上的Flash Builder用户已经在他们的机器上成功调试了这个项目。我可以构建和调试我自己创建的项目。这是特定的项目,或者它是如何构建的,它阻止了调试的发生。

症状:

  • 通过Debug按钮启动程序会运行程序,但是存在断点会导致程序冻结运行它的浏览器
  • 删除断点或停止调试器允许浏览器解冻并正常继续
  • 实际上没有达到断点并进入调试器
  • 在执行期间尝试放置断点会导致内部错误:java.lang.NullPointerException
  • .metadata / .log

    中的示例日志消息
    java.lang.NullPointerException
    !STACK 0
    !MESSAGE Error processing debugger commands
    !ENTRY com.adobe.flexbuilder.project 4 43 2011-08-24 13:35:07.404
      at java.lang.Thread.run(Thread.java:680)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.run(FlexDebugTarget.java:793)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.eventLoop(FlexDebugTarget.java:732)
      at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread$1.run(FlexDebugTarget.java:752)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.access$7(FlexDebugTarget.java:642)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.advanceStateMachine(FlexDebugTarget.java:668)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.installDeferredBreakpoints(FlexDebugTarget.java:637)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget.access$4(FlexDebugTarget.java:1006)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget.instantiateBreakpoint(FlexDebugTarget.java:1012)
      at com.adobe.flexbuilder.debug.breakpoints.FlexLineBreakpoint.instantiate(FlexLineBreakpoint.java:465)
      at com.adobe.flexbuilder.debug.breakpoints.FlexLineBreakpoint.findSourceFiles(FlexLineBreakpoint.java:412)
    

尝试修复:

  • 清理项目
  • 清除浏览器缓存
  • 尝试过不同的浏览器(是的,我有调试播放器)
  • 已删除.metadata
  • 已删除工作区
  • 重新安装Flash Builder
  • 重新安装调试Flash Player
  • 重启Mac
  • 尝试了不同的SDK
  • 为32位和64位配置重新排序Java首选项
  • 从项目配置中删除了符号链接(即,不再需要符号链接来正确查找构建或运行位置)
  • 清除Flash日志
  • 确保编译的程序不超过一个版本(因此实际上无法从其他位置运行)
  • 通过编译器参数显式启用调试:-debug=true
  • 更改项目属性
  • 中的所有相关和许多不相关设置

项目详情:

  • 有趣的是,单击Project Properties中的Actionscript Applications会导致Flash Builder立即变得无法响应
  • 使用第三方库获取可能是也可能不是Debug版本的功能
  • 通过Actionscript Build Path>使用第三方代码获取其余代码中包含的功能。源路径(请注意,即使包含的路径已在源目录中,也必须为此项目显式包含此文件夹)
  • 从本地网络服务器运行,使用不是“localhost”的自定义域访问本地数据库,也不使用IP地址(针对Chrome Cookie问题进行了更改),而不是http://programname.local/
  • 启动配置以正确的本地URL启动Web浏览器(而不是从文件启动),可能无关紧要
  • 还有一个额外的编译器参数只是创建一个全局的编译时常量,可能是无关的
  • 源和项目目录包含svn存储库文件夹和文件,可能不相关
  • 我有一个NDA,所以我只能谈论项目及其结构,我不能发布代码

配置:

  • Mac OS 10.6.8
  • Flash Builder 4(通过CS5)
  • Flex SDK 4.0和4.5.1

2 个答案:

答案 0 :(得分:1)

想出来。我们的应用程序使用了我从其他人那里得到的预加载器。我以为它被编译为调试,因为我总是从我们的调试服务器获得我的副本。我并不完全了解它是如何运作的或它在做什么。

由于预加载器中出现Flash错误,今天早上我第一次被迫编译它。正常编译(作为调试)我意识到非调试swfs加载调试swfs的问题可能适用于此。

一旦我正确编译了预加载器并修复了它的bug,断点就按预期工作了。显然我们的预加载器正在实际加载主应用程序。 Flash Builder显然无法处理此设置(非调试加载调试swf),而FlashDevelop显然可以。

答案 1 :(得分:0)

您是否尝试过重启Mac?

我感觉到你的痛苦,我尝试修复的清单是我先尝试的方法:)

我有类似的情况,经过数小时的诅咒Adobe我重新启动了我的Mac并解决了它(可能是某种内存错误)。