在公司里面的flash builder可以正常的概要分析(profiler),自己的本子始终不行。报错信息:
无法连接到应用程序以访存概要分析数据。请再次尝试对应用程序进行概要分析。
搜索了下百度,基本没有相关信息,然后尝试重装Flash Builder,重装后还是不行。
去google.com搜索Flash Builder Profiler,搜索到一篇adobe论坛的帖子(http://forums.adobe.com/thread/657773),好像有这个问题的人还挺多的。然后浏览了下,有人说是flashplayer10.1的问题,降级到10.0就可以了,试了下,发现还是不行。
多次尝试无果后,偶然发现我进行概要分析的时候,在D:\Backup生成了一个mm.cfg。很奇怪,怎么这个地方会有这个文件,然后删除了,然后再点概要分析,发现确实是fb生成的。
问题就是这个,因为flashplayer是从用户目录下面读取mm.cfg的,然后这两个文件不在一个地方,就出问题了。
找到问题了,但是怎么解决呢?
去fb的安装目录看看有没有什么配置文件的。然后发现了configuration目录下面的config文件里面有一行是:
osgi.instance.area.default=@user.home/Adobe Flash Builder 4
这里有个user.home,然后搜索了下这个变量,发现没有其它地方有这个变量的设置。
考虑到fb是Eclipse做的,然后搜索Eclipse user.home 然后发现这个变量是从java的user.home系统变量继承而来
然后搜索java user.home 然后发现这个变量生成规则是:
Windows 平台:
1:从 Windows 注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders 中查找 Desktop 键并获取这个键值的上层目录;
2:如果步骤 1 为 null,则加载 Win32 API: shell32.dll,调用其中的 SHGetSpecialFolderLocation 函数获取 CSIDL_DESKTOPDIRECTORY 的路径值,再取这个路径的上层目录;
3:如果步骤 2 为 null,则采用默认的 C:\。
(参考:http://www.fwriter.com/html/Java/6270/20518.html)
原来这个变量是用户桌面目录的上级目录,居然是这样!!但是我的桌面目录使用超级兔子修改为了:D:\Backup\桌面
然后由于这个就导致了fb认为用户目录是D:\Backup了。而不是正确的C:\Documents and Settings\rendong
查看java参数,发现有-D选项,可以设置系统变量,于是最后的解决方案就出来了:
修改fb安装目录的FlashBuilder.ini文件,在最后增加一行:-Duser.home=C:\\Documents and Settings\\rendong
重新打开fb后,就可以正常的进行概要分析了。
总结:这个问题的元凶还是要追溯到java上面,处理用户目录居然用这么傻的规则。