Firefox扩展调试的一些心得和技巧

Posted by c4pr1c3 on June 30, 2010

Firefox扩展的调试目前来看,似乎无法做到单步跟踪调试,只能通过“打印”到控制台的方法。查阅了一些资料,做了一些实验,简单总结一下我的一些调试心得。

1. 关于调试输出函数的选择

dump()

Components.utils.reportError()

利用nsIConsoleService接口

建议安装Console²这个Firefox扩展来增强“错误控制台”的功能

2. 关于日志输出位置和查看输出日志的方法

默认Firefox设置情况下,dump()函数的输出是不会被记录到错误控制台的。为了方便调试,建议通过编辑user.js,增加以下配置项内容来记录所有的调试信息。

pref("browser.dom.window.dump.enabled", true);
pref("javascript.options.showInConsole", true);
pref("javascript.options.strict", true);
pref("nglayout.debug.disable_xul_cache", true);
pref("nglayout.debug.disable_xul_fastload", true);

user.js一般位于.mozilla/firefox/p9r1capr.xxx/

当然也可以通过修改about:config中的配置参数来达到相同的目的。

3. 设置Firefox的开发中扩展目录,方便测试

在Firefox的用户配置目录下,具体是/home/caprice/.mozilla/firefox/p9r1capr.dev/extensions,以你的扩展名为文件名新建一个文件,并以该扩展的发布版所在主目录绝对路径为内容写入该文件。如:

/home/caprice/NetBeansProjects/sqlinjme/build/testfirefox-3.6.3/extensions/sqlinjme@huangwei.me

这样每次在Netbeans中修改了扩展的源代码后可以不需重启浏览器,直接调试新代码。

4. 关于Netbeans+foxbeans中的Firefox扩展设置参数

nbproject/project-moz.properties

这里定义了所有Netbeans中用到的一些公共变量值,如:

#mozilla addon settings
#Fri Jun 18 14:09:54 CST 2010
appdisplayname=sqlinjme
targetApplications=\n<\!-- Mozilla Firefox -->\n\t\n\t\t{ec8030f7-c20a-464f-9b0e-13a3a9e97384}\n\t\t1.0\n\t\t3.6.*\n\t\n\n\n
appname=sqlinjme
appdescription=sqlinjme is a Mozilla/Firefox Addon
mozInstallationName=Mozilla Firefox
appversion=1.0
ffexec=/home/wind/bin/icecat-2.0.0.11-g1-i386/icecat
appid=sqlinjme@huangwei.me
auther=huangwei

如install.rdf、build.xml等重要的配置文件中都会引用这个文件中定义的变量。