按照网上其他人给出的方法,打开了firefox工程之后,设置好环境变量,自己就可以打开一些文件,下断点,进行调试等。但是我一直没有找到打开某个特定文件的方法,如下图是firefox工程点击右键时的选项:
不过可以添加现有项目,这样可以把firefox.exe目录下的其他测试程序都打开来调试一下,上图中我就打开了TestGetURL等几个测试程序。因此,我总也没找到人家说的打开文件如何打开。
后来在网上问别人,终于知道了我的问题出在哪里了。其实打开文件就在VS的文件菜单里面。这也只能怨我自己对VS不熟悉。打开文件的菜单截图如下:
也可以快捷键ctrl+O打开,我打开了文件~\firefox-8.0.source\netwerk\base\src\nsBaseChannel.cpp,并在GetNotificationCallbacks函数上设置一个断点。接着运行程序,程序果然就断在了这个地方,如下图:
这下好了,我可以随便想打开哪个文件就打开哪个文件并设置断点进行调试了,下一步要坐的就是修改文件,并使我做的修改能够起作用。
我的想法是在某个文件里添加一句打印信息,如果我添加的打印信息能够成功显示,那么就说明修改起作用了,我在d:\firefox-8.0.source\toolkit\xre\nsWindowsWMain.cpp文件中的wmain函数中添加了一句printf("Usage: TestGetURL <url>\n");这句是直接从TestGetURL的源文件中复制过来的。
修改之后我再次F10发现VS会提示文件已经修改,选择是,程序会按照原来的执行,选择否则会显示无可用源。于是我就试着对firefox重新编译了一遍。也不知道是为什么,我没有按照最开始那样运行make -f client.mk build,我直接与运行了make -f client.mk,这样编译花费了很久,但是比第一次编译花的时间短很多。重新编译之后,我再次F10运行修改了的程序。运行完毕修改之处就显现了我写的打印信息,如下图:
如此,就证明了我可以修改某个源文件,重新编译一遍,然后就可以对修改之后的程序进行跟踪调试了,虽然步骤比较繁琐,但是这找到了一条可行的方法。不过也说明编译的时候可以用make -f client.mk,但是第一次编译最好还是用make -f client.mk build,因为我不敢保证第一次编译的时候不加build会出现什么结果。