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