gdb 初步学习记录

时间:2021-08-07 03:07:10
  • 客户有一段代码,一个死循环, 里面就一个 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 , 这样很容易出现问题。