gdb调试学习笔记

根据C语言技术网网课及查询的其他博客整理,供个人查询使用

gdb常用的命令等

点击这段文字查看C语言技术网的C语言gdb调试的课程,非常方便。

调试core文件

如果工程是通过CMake进行构建的话,再CMakeList.txt中需要加入:

SET(CMAKE_BUILD_TYPE "Debug")  
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")  
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")  

然后可以使用gdb进行调试(比如生成的可执行文件是test)

gdb ./bin/test

调试core文件我感觉主要就是去查看烦人的段错误吧。。。ubuntu系统下首先输入:

ulimit -a

查看当前用户系统参数的限制情况:
gdb调试学习笔记_第1张图片
现在core文件的大小为0,就是说不生成core文件,他的参数可以看到是-c,然后就:

 ulimit  -c unlimited

这就接触了限制。然后再运行./bin/test后,会生成一个core文件,这时调试的时候就可以:

gdb ./bin/test core

就可以看到明确的错误,如视频中演示的:
gdb调试学习笔记_第2张图片
可以使用bt来查看函数的调用栈查看:
gdb调试学习笔记_第3张图片

调试正在运行中的程序

  1. 假如在窗口1有一个test的程序正在运行,比如循环1万次,每次循环时都睡眠1s。
  2. 打开窗口2,首先查询test程序的进程编号ps -ef|grep test,知道后就使用gdb test -p 进程编号进入调试,此时查看窗口1会发现test程序暂停,如果退出调试,程序还会继续跑。

你可能感兴趣的:(Ubuntu18.04学习,c++,gcc/gdb编译调试,cmake)