当前位置: 首页 > 工具软件 > CGDB > 使用案例 >

CGDB basic instruction and environment configuration.

索瀚海
2023-12-01

cgdb调试总结

目录

1.cgdb安装

# 安装不一定最新版本cgdb
sudo apt-get install cgdb  

# 安装最新版本cgdb
## 依赖安装
sudo apt install automake
sudo apt install flex
sudo apt install texinfo
sudo apt install libncurses-dev
sudo apt install libreadline-dev
## 编译安装cgdb
git clone https://github.com/cgdb/cgdb.git
cd cgdb
./autogen.sh
./configure --prefix=/usr/local
make 
sudo make install

2.常用操作指令

1. 操作快捷键

  1. ESC按键切到cgdb窗口,i按键切换到gdb窗口。
  2. s按键鼠标滚轮可以在cgdb窗口中滚动。
  3. +/-按键缩放cgdb窗口。
  4. spacebar按键在cgdb窗口中代码打断点。
  5. Ctrl+w调整cgdb窗口位置。
  6. F5 send a run command to GDB
  7. F6 send a continue command to GDB
  8. F7 send a finish command to GDB
  9. F8 send a next command to GDB
  10. F10 send a step command to GDB

2. 基本操作指令

# 文件进入调试
cgdb 可执行文件/core文件 

# gdb窗口
r  //run code
b 行号  //添加/设置断点
info breakpoints  //显示所有断点信息Num Type Disp Enb Address What

# 单步执行(***程序运行到断点后执行)
c continue
s step
n next
u 行号  //快速执行到文件某一行util+ fileline
jump 行号  //直接跳中间代码到某一行
finish
return  
delete   //删除所有断点
enable   //打开断点
disable  //关闭断点

# 查看变量
print 变量名
whatis 变量名

3. 程序运行顺序

run命令:开始调试
	简写命令 r
continue命令:在断点处继续调试,或者按了ctrl c 后继续调试
	简写命令 c
next命令:运行到下一行(但是不进入调用的函数) 		简写 n
step命令:进入被调用的函数内部						简写 s
util命令:util+ fileline  快速执行到文件某一行		简写 u
jump命令:jump + fileline 跳过中间的代码直接到fileline这一行

finish命令:运行完当前被调用的函数
return 命令:在当前行直接return回去

4. 断点及堆栈类指令

break命令:打断点,例如  break  file:line   |  break 函数名
	简写命令 b
backtrace命令:打印堆栈信息
	简写命令 bt
frame命令:frame + 堆栈编号(通过bt知道的编号)
	作用:跳转到堆栈编号处
	简写命令 f
info break命令:查看断点信息
	简写命令 i b
enable命令、disable命令、delete命令:打开、关闭、删除断点
	通过 i b 命令得到断点编号,这三条命令后接断点编号
delete 删除全部断点:$ delete 		#这样既可

5. 代码显示及数据类指令

list命令:可以连续按,有 l -  和  l + 两种显示源码顺序
	简写命令 l
print命令:打印某个对象的数据,注意指针
	简写 p
ptype命令:打印数据类型
watch 命令:观察某一个变量,一旦改变就会打印出来(注意指针)
display 命令:监视变量或内存,每次中断自动打印相应的数据
info args命令:打印参数信息
help info命令:可以看到其他查找info的命令

显示string类型的数据 :(char*)p				# p为string类型的指针
set print pretty on							#使得结构体数据显示友好一点

6. 线程类命令

info thread命令:打印线程信息命令
thread + 线程编号 命令:切换线程编号

7. 重要指令

disassemble 命令:反汇编(默认AT&T 格式的指令)
		set disassembly-flavor intel(设置为intel汇编格式)
set args 和 show args 命令:设置参数、显示参数
tbreak 命令:临时断点,只会运行一次后自动删除

8. 特殊操作

print命令:不仅可以打印数据,还能改变数据
	p testInt = 512			#这样就能够改变数据,插入到程序中运行
list命令:可以显示别的文件的信息
	list filename:fileline

9. 多进程

ps 得到我们所需要的进程pid
gdb attach pid 开始调试
detach 结束调试
info inferiors		$查看进程
 类似资料:

相关阅读

相关文章

相关问答