BUG经历

                           不同路径还原法

 

最近项目要求将公司原有采集推流工具将核心功能封装成dll,供第三方程序调用。Dll提供后第三方程序调用dll后释放偶尔会有崩溃问题。单步调试却没有发生任何问题,但是有个特殊现象引起我的注意。当进入主dll什么都不做直接关闭退出没有任何问题,按推流按钮调用推流接口,之后再停止推流,此时在关闭程序,程序必回崩溃。由此现象我初步断定是由于主程序已经退出,我的dll内部有游离线程没有退出,导致资源没有释放完毕导致的。为了验证自己的推测,在进入主程序后先看看各个线程运行状态如下:

 

 

按推流按钮,推流一段时间后结束推流。此时程序应该恢复到程序刚进入是的状态。在看测试程序的线程运行状态如下:

 

 

发现此时多了个TimeTickRtmp::TickThread线程。我去程序中去跟踪该线程果然退出该线程没有去显示的关闭回收资源。添加显示关闭该线程代码后果然第三方调用退出后不再崩溃,问题游刃而解。

      从代码不同的路径进入相同逻辑状态,包括调用其它功能,再回来该逻辑状态。查看不同路径到这里时程序内存、线程、资源有何不同进而定位bug所在

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值