apache 中有大量的函数是通过宏来定义的,这里仅举一例,应该带有通用性。
ap_hook_child_init()
这个函数在哪里定义的呢?
如果你有源代码阅读工具如source insight,understand帮忙,应该能够看到它定义在 server/config.c中。
这里只讲具体展开来看其内部实现。
首先,得到config.c的预编译文件
在httpd-2.2.17目录中,./configure之后,不直接make,而是
# cd server
# make -n | grep "config\.c"
这样就能快速得到编译server/config.c的命令。
这个命令可能有点长,其最后一段字样是:
-c config.c && touch config.lo
修改为
-E config.c
真实执行一遍,即可得到
config.o
这个文件就是config.c的预编译文件。
以上步骤中若遇到任何问题,请先执行
# make clean
其次,搜索预编译生成的文件,找到函数定义
在文件中搜索,即可得到