使用VS2019诊断工具定位C++程序卡死问题
使用VS2019诊断工具定位C++程序卡死问题
问题定位
- 正常运行只需要3分钟以内,6分钟还是没有响应,也没有崩溃
- 选择【全部中断】
- 选择一个时间段,查看CPU占用情况
- 选择【调用树】
- 找到能查看代码的最底层调用,即可定位到引起程序卡死的代码
问题分析
我这里是因为在多线程环境中,两个线程同时访问和修改同一个m_dbVoltage指针,且一个线程正在删除这个指针指向的对象,引发数据竞争,导致未定义行为和程序卡死。