定位解决问题/经验/教训(1)-局部变量接指针入参问题

1. 问题:

CLGJ查询规则名遍历失败,gdb跟踪到recv死了
原本以为卡死在socket recv 接口处 定位分析
但是其实是遍历链表卡死

2. 定位分析

xxxFunc(……,XXX_NODE_S *pXXXNode)
{
	XXX_NODE_S stTmp ;
	stTmp = *pXXXNode;
	YYY_LIST_HEAD_S* pList; //YYY_LIST_HEAD_S 是 XXX_NODE_S 结构体的成员list
	pList = &(stTmp.list); //这里 用局部指针 接这个局部变量 
	FOR_EACH(pList.listHead); //遍历这个变量中的链表头进行操作
	……						  // 这里肯定失败,因为 pList.listHead 是栈上面的地址
	……
}

函数中我用了一个局部结构体变量接了指针入参
然后去遍历这个变量中的链表…………
这肯定遍历不了啊,因为结构体变量(栈变量)中只有当前信息

3. 总结:

3.1. 指针入参不需要用局部变量来承接

可以用局部指针来接 这样没问题
但是建议尽量不用局部变量接,直接操作入参指针即可

3.2. 定位问题: 思路要清晰 不能东打一耙,西打一棒

	在这里就直接 gdb 跟一个流程下来看问题出在哪里 这样清晰明了
	我当时是 
		gdb 跟了一下 就判断 dlpd 守护进程没问题 而没有详细进去一步一步看
		recv 接口死了 就跟 send recv 什么也没有
		…………找不到原因了
		…………
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值