文章
2022/11/21
GDB调试器(GNU Project Debugger)的使用
因为某些原因,一直使用C++做嵌入式开发的咩咩被迫使用C++开发了一些PC端程序的功能,因为历史遗留原因,程序只能在Linux服务器上运行,为了解决一些bug,于是就有了这篇文章
首先使用gcc编译的时候,需要配置DEBUG=true(Makefile.inc)
debugb
# 先找到需要插入的进程idps -ef | grep '名字'# 进入jdbgdb attach 上面左侧的数字id这时命令行显示(gdb)就是进入成功了,此时程序会暂停
速通:

详细教学:
# 可以显示帮助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 nextlay prev# 其中支持的lay有cmd(默认的)src(源码)asm(汇编)等,可以这样切换lay src# 可以这样把光标焦点移到指定窗口focus cmd如果咩咩的文章对您有帮助,您可以 请我喝牛奶