GCC编译器 and G++编译器

GCC

1》完整的GCC编译过程:
  1. 预处理pre-processing: -E 例如:g++ -E test.cpp -o test.i 预处理后生成.i文件
  2. 编译compling -S 例如:g++ -S test.i -o test.s 编译后生成.s汇编文件
  3. 汇编assembling -c 例如:g++ -c test.s -o test.o 汇编源代码编译为机器语言的目标代码
  4. 链接linking g++ test.o -o test 产生可执行文件

该过程等同于g++ test.cpp -o test

2》 g++重要的编译参数
  1. -g 编译带调试信息的可执行文件 g++ -g test.cpp -o test
  2. -O[n] 优化源代码
  3. -lglog 默认/ -L 自定义目录 -l库名
  4. -I 指定头文件搜索目录 g++ -I/myinclude test.cpp
  5. -Wall 打印警告信息
  6. -w 关闭警告信息
  7. -std=c++11 设置编译标准
  8. -o 指定输出文件名 (不加该参数默认生成a.out)
  9. -D 使用编译器时定义宏

G++

1》断点

设置断点可以通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。

格式为:

break 函数名

break 行号

break 文件名:函数名

break 文件名:行号

break +偏移量

break -偏移量

break *地址

删除断点通过命令包括:

delete <断点id>:删除指定断点

delete:删除所有断点

clear

clear 函数名

clear 行号

clear 文件名:行号

clear 文件名:函数名

断点还可以条件断住

break 断点 if 条件;比如break sum if value==9,当输入的value为9的时候才会断住。

condition 断点编号:给指定断点删除触发条件

condition 断点编号 条件:给指定断点添加触发条件

断点还可以通过disable/enable临时停用启用。

disable

disable 断点编号

disable display 显示编号

disable mem 内存区域

 

enable

enable 断点编号

enable once 断点编号:该断点只启用一次,程序运行到该断点并暂停后,该断点即被禁用。

enable delete 断点编号

enable display 显示编号

enable mem 内存区域
2》显示栈帧

如果遇到断点而暂停执行,或者coredump可以显示栈帧。
通过bt可以显示栈帧,bt full可以显示局部变量。
命令格式如下:

bt

bt full:不仅显示backtrace,还显示局部变量

bt N:显示开头N个栈帧

bt full N
3》打印变量

“print 变量”可以显示变量内容。
如果需要一行监控多个变量,可以通过p {var1, var2, var3}。
如果要跟踪自动显示,可以使用display {var1, var2, var3}

4》单步执行

单步执行有两个命令next和step,两者的区别是next遇到函数不会进入函数内部,step会执行到函数内部。
如果需要逐条汇编指令执行,可以分别使用nexti和stepi。

5》继续执行

调试时,使用continue命令继续执行程序。程序遇到断电后再次暂停执行;如果没有断点,就会一直执行到结束。

continue:继续执行

continue 次数:继续执行一定次数。
6》监视点

要想找到变量在何处被改变,可以使用watch命令设置监视点watchpoint。

watch <表达式>:表达式发生变化时暂停运行

awatch <表达式>:表达式被访问、改变是暂停执行

rwatch <表达式>:表达式被访问时暂停执行
7》改变变量的值

“通过set variable <变量>=<表达式>”来修改变量的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值