时间:2021-07-01 10:21:17 帮助过:30人阅读
下面我在自己虚拟机上的一个进程拷贝的代码进行的实验
gcc main.c -g -o app
gdb app
之后我们就可以使用gdb进行调试了
run全速执行,start开始执行,这两个命令如果有命令行参数的话最好加上(建议)
启动界面
start直接执行到了67行
list:可以查看代码
list+num可以指明查看哪一行代码
听过break可以打断点,info breakpoints可以查看我们用了哪些断点,delete breakpoints可以取消断点,这里我们需要注意一个问题就是,在virtual studio中的断点,如果关闭了下次打开仍然存在,但是这里如果关闭了下次就不会存在了
相对应的,vs中有监禁的功能,就是监视变量,display就有这个功能,info display可以查看我们监视了哪些变量,之后我们每次next和step的时候,都会在最后几行显示监视的变量,delete就是删除了
step就是按语句调式,next就是按照过程调式
set var 变量名=值 可以中途改变变量的值,
printf可以中间输出变量的值
backtrace( bt )显示程序的层次关闭,与函数调用栈帧,下面75行到26行跳到了另外一个函数,这样可以使用backtrace就可以看层次关系,两个函数使用不同的栈,所以我们使用print argc的时候不好使,我们可以通过frame临时跳到main中,
在一盒函数中我们使用finish可以挑战到调用的开始位置
x(x/20wx)可一查看内存,20表示查看20字节,w表示word,x表示十六进制
continue 如果使用断点的话我们使用continue可以按照断电进行
set follow-fork-mode (child or parent) 调用父进程子进程
core启用core文件,帮助调试
在编译运行app的时候,如果有问题,会生成一个core文件通过gdb core会直接发现错误,这种方法非常方便,但是core的文件特别大
quit退出调试
linux gdb基本概念
标签:gui tin 十六进制 follow rac app 实时 命令行 img