gdb编译命令

在我的工作中曾经尝试过使用gdb来编译python。
目前我了解到可以用gdb来跟踪C/C++程序的运行情况


1.编译程序
gcc swap.c -std=c99 -g
生成可执行程序a.exe (在linux下是a.out) 其中编译选项-g告诉编译器生成调试信息

2.运行gdb
gdb a.exe
gdb运行时会自动装入刚才生成的可执行程序

3.查看源码

(gdb) l

字母l是输入的命令,为list(列出程序清单)的缩写。

4.加断点并运行

(gdb) b 4
BreakPoint 1 at 0x401308: file swap.c, line 4 
(gdb) r
Starting program: D:\a.exe
(etc..)

b命令把断点设置在第4行.r命令运行程序,碰到断点就停止
b swap命令也可以设置断点(swap是函数名),这样断点将设置在swap函数的开头
(etc..) 表示后面还有打印出来的信息,但笔者觉得写出来意义不大,因此省略

5.查看调用栈

(gdb) bt
#0 swap(a=4,b=3) at swap.c:4
#1 0x00401356 in main() at swap.c:8
(gdb) p a
$1 = 4
(gdb) up
#1 0x00401356 in main() at swap.c:8
8         swap(3,4);
(gdb) p a
$3 = 3
命令名 作用
bt 查看调用栈中所有的栈帧,其中#0为当前栈帧
p 打印变量的指令,print的首字母缩写
up 选择当前栈帧的上一个栈帧
q 退出gdb
s 单步调试
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。