GDB与调试

FAQ:

linux或wsl下,进入GDB后如何执行外部命令?

输入shell,回到shell,再输入exit返回GDB

image-20210306221228645

vscode使用gdb调试如何输入gdb命令?

在DEBUG CONSOLE窗口使用-exec gdb-comand形式,如下图输入-exec c,程序继续执行,直到16行断点处停住

image-20210306230615129

image-20210306230712018

win10下如何使用gdb?

安装Mingw64

gdb开启调试?

必须要有一个已经编译的程序,如win10下用g++编译的exe文件,且编译时加了-g参数,加入debug的符号信息

然后输入gdb executable-file进入gdb,在gdb提示符后输入run就启动了程序,会有如下的类似符号载入信息

退出gdb?

输入quit或 q

屏蔽进入gdb的开始信息

每次进gdb加上 -silent 参数

gdb常用命令

break n 在某行断点

run 执行当前程序,会在第一个断点处停住

continue 程序在某处停住后,继续执行,直到遇到下一处断点

next 执行单步运行

print var-name 打印变量值

list 打印某行或某个函数

watch 观察某个变量

GDB的三种调试方式

  • gdb filename
  • gdb attach pid
  • gdb filename corename

https://gitbook.cn/gitchat/column/5c0e149eedba1b683458fd5f/topic/5c0e1e9fedba1b6834591e85

gdb的调试原理

https://gitbook.cn/gitchat/column/5c0e149eedba1b683458fd5f/topic/5c0e1e47edba1b6834591e7f