因为某些原因,一直使用C++做嵌入式开发的咩咩被迫使用C++开发了一些PC端程序的功能,因为历史遗留原因,程序只能在Linux服务器上运行,为了解决一些bug,于是就有了这篇文章

首先使用gcc编译的时候,需要配置DEBUG=true(Makefile.inc)
debugb

# 先找到需要插入的进程id
ps -ef | grep '名字'
# 进入jdb
gdb attach 上面左侧的数字id

这时命令行显示(gdb)就是进入成功了,此时程序会暂停
速通:
与vscode的debug按钮对比
详细教学:

# 可以显示帮助
help breakpoints
# 给叫ClassName中的funcName方法打断点
b ClassName::funcName
# 给filename.cpp的第404行打断点
b filename.cpp:404
# 继续执行
c
# 显示附近的行的代码
l
# 跳到下一行,每运行一行会显示当前行运行的行号和代码
n
# 输出user_id变量的值
p user_id
# 用hex显示user_id变量的值
p/x user_id
# 显示login_head_flag变量的类型
ptype login_head_flag
# 用hex显示login_head_flag这个char数组指针指向的实际的值并显示前2位
p/x (*(char*)login_head_flag)@2
# 显示login_head_flag中指针user_id的值
p login_head_flag->user_id
# 退出 然后y确认退出
quit
# gdb有多种布局,你可以这样切换下一个和上一个
lay next
lay prev
# 其中支持的lay有cmd(默认的)src(源码)asm(汇编)等,可以这样切换
lay src
# 可以这样把光标焦点移到指定窗口
focus cmd