关于firefox编译调试

本文关注如何在ubuntu下编译firefox源码,如何debug。以及打印出感兴趣的信息。官方的页面如下:

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions

developer_guide

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide

1. Build prerequisites

sudo apt-get install zip unzip mercurial g++ make autoconf2.13 yasm libgtk2.0-dev libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libasound2-dev libcurl4-openssl-dev libiw-dev libxt-dev mesa-common-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libpulse-dev

 

2. download source code

ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0/source/

firefox-29.0.source.tar.bz2

文件太大,直接用ftp下载会断,可用wget  ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0/source/firefox-29.0.source.tar.bz2

如果中途断掉,用wget -c ftp://… 继续下载

这个本地下载至少要花4+小时,本地速度2K/s , 源码大小为137M 。如果通过阿里的机器来下载速度会快很多(4K~50K/S)。然后再转到本机。

3.unpack it

tar -xjf firefox-29.0.source.tar.bz2

4. config for debug

cd mozilla-release
echo “ac_add_options –enable-debug” > .mozconfig

5. build

make -f client.mk build

编译时间为1.5小时。生成的文件位于:./obj-i686-pc-linux-gnu/dist/bin/firefox

关于gdb debug https://developer.mozilla.org/en-US/docs/Mozilla/Debugging

动态库装载前设置断点:set breakpoint pending on

6. logfile. 假定要导出所有的http request 和 response.

env NSPR_LOG_MODULES=nsHttp:4 NSPR_LOG_FILE=logfile.txt  obj-i686-pc-linux-gnu/dist/bin/firefox  http://www.bagualu.net/wordpress

这样会将源码中,所有打印到gHttpLog的信息会输出到logfile.txt.

要找到所有可输出的信息,可以查找PR_NewLogModule , 找这个函数的参数,然后在运行firefox之前,如上述,指定需要导出的信息。



本文地址: http://www.bagualu.net/wordpress/archives/3453 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注