项目背景QT项目完成测试的过程中QT项目直接崩溃提示stack smashing detected。增加qDebug()打印想初步定位一下故障原因。结果界面直接崩溃未提示任何信息。测试方法使用AddressSanitizerASan重新编译项目它会精确报告栈溢出的位置。在.pro文件中添加QMAKE_CXXFLAGS -fsanitizeaddress -g QMAKE_LFLAGS -fsanitizeaddress将打印出的信息丢给AI解析最后定位出是引用的外部库内部栈溢出有一个变量未初始化为0。可能为负数或较大的值该变量用于数组索引号会导致栈的上溢出或下溢出最终导致崩溃。至于为什么会在该特定情况下出现该问题有待进一步定位。
QT排故流程记录
项目背景QT项目完成测试的过程中QT项目直接崩溃提示stack smashing detected。增加qDebug()打印想初步定位一下故障原因。结果界面直接崩溃未提示任何信息。测试方法使用AddressSanitizerASan重新编译项目它会精确报告栈溢出的位置。在.pro文件中添加QMAKE_CXXFLAGS -fsanitizeaddress -g QMAKE_LFLAGS -fsanitizeaddress将打印出的信息丢给AI解析最后定位出是引用的外部库内部栈溢出有一个变量未初始化为0。可能为负数或较大的值该变量用于数组索引号会导致栈的上溢出或下溢出最终导致崩溃。至于为什么会在该特定情况下出现该问题有待进一步定位。