我在一个相当大的项目中遇到了一些内存损坏问题,无法控制一些科学硬件(大约6000行),我不确定哪种方法/工具可以解决问题。该项目使用Qt 4.8,它是用QtCreator和MinGW构建的。该程序或多或少的工作,但我有一些稳定性问题。有时我会遇到随机崩溃,但在某些情况下,当我稍微改变源代码时,程序将在完全相同的位置(先前已经工作过的位置)崩溃。它这次选择的位置看起来像这样:
char stages2[1024];
sprintf(stages2, "M-511.DD.LOAD\nNOSTAGE");
当我在gdb中运行它时,第二行给出了分段错误(SIGSEGV) - 这告诉我程序的内存存在某种问题,因为我确定这两行是正确的。此外,“崩溃站点”根据确切的源代码而变化;我甚至看到过Qt正在使用的Windows DLL中的崩溃。
我已经研究了几个选项来找出问题的原因,但我遇到了一些困难:
对于最终摆脱这个错误的最有希望的方法,我真的很感激。
答案 0 :(得分:0)
使用优化和-Wall
(以及可能的其他警告标志)进行编译,检查所有警告,确保没有任何可疑之处。
使用像valgrind这样的工具来检查内存管理问题。