-
客户有一段代码,一个死循环, 里面就一个 times(NULL) 函数,以及一个usleep, 运行了10分钟左右就会出现段错误。
-
现在用 gdb 调试看一下是哪一步出现了问题。
-
在Linux 虚拟机里面, 将客户的 test.cpp 加参数 -g 编译成可调试文件。
arm-linux-g++ -g test.cpp -o gdb_test
// 然后将可以调试文件以及 test.cpp 源代码文件都放入 arm 板子里面运行
-
在板子里面一直 gdb 调试命令,并在板子里面运行
gdb gdb_test
-
然后在执行简单的调试命令
r
// 运行
// 最后发现是 times 函数出现问题,提示是在 libc.so.6 里面
-
最后发现很多函数的参数是不能传空指针 null , 这样很容易出现问题。