gdb跟踪bbs中删除版面的过程:
先登陆bbs,比如pid是nnn(数字)
$gdb src/bbs -p nnn <---attach上进程
在menu.ini里找到对应于"[B]oardDel 砍掉讨论区"功能菜单,如下
@DelBoard 0, 0, PERM_BLEVELS, "Board Delete","[B]oardDel 砍掉讨论区"
第一列的DelBoard就是这一功能的函数。
而“DelBoard”在ht/src/comm_lists.c程序中对应于删除版面的函数d_board,如下所示
{"DelBoard", (void *) d_board}, {"SetTrace", (void *) m_trace},
所以要把d_board函数设置为断点进行跟踪。
attach上之后,程序会停住,按c继续运行,然后到断点就停,再s或者n就行。
$tb d_board <---设临时断点在d_board函数
然后
n是step over;s是step into;p是显示变量值
c是继续运行
gdb提供两种方式:1.单步进入,step into就是跟踪到函数内啦。命令是step或s
2.单步,next,就是简单的单步,不会进入函数。命令是next或n