gdb调试快速入门
Linux 调试 – gdb使用背景程序的发布方式有两种,debug模式和release模式,debug版本程序内会保存调试信息,容量会比release版本大,效率也会比release版本低。 程序发布到用户手里使用的都是release版本,编译器对其做了大量的优化,容量减小 效率提高。Liunx gcc/g++ 编译出来的二进制程序,默认是release模式,需要加上-g 选项才能是debug版
Linux 调试 – gdb使用
背景
程序的发布方式有两种,debug模式和release模式,debug版本程序内会保存调试信息,容量会比release版本大,效率也会比release版本低。 程序发布到用户手里使用的都是release版本,编译器对其做了大量的优化,容量减小 效率提高。
Liunx gcc/g++ 编译出来的二进制程序,默认是release模式,需要加上-g 选项才能是debug版本。
常用操作
- list / l 行号:显示源代码。
- list / I 函数名:列出某个函数的源码。
- run / r :运行程序。
- s / step :进入函数调用
- break / b 行号 : 在某行设置断点
- info b (break) : 显示断点信息。
- finish : 执行到当前函数返回,然后停止等待命令。
- print / p : 打印当前表达式的值,通过表达式修改变量的值或调用函数。
- p 变量 :打印变量值。
- set var : 修改遍历值。
- continue / c : 从当前位置开始执行,如果遇到断点停止。
- delete breakpoints : 删除所以断点。
- delete breakpoints n: 删除序号为n的断点。
- display 变量名 :常显示一个变量,
- undisplay : 取消显示变量。
- until X 行号 : 跳至X行
- breaktrace / bt : 查看各级函数调用及参数
- info (i)locals :查看当期去那堆栈局部变量的值。
- quit / q 退出gdb
调试
vim创建一个c文件,程序计算0到100的累加和,并打印。
gcc 创建debug 版本文件
输入list 0 显示源码,省下的未显示可以继续回车显示。
设置两个断点,使用 info b(break)可以查看断点
输入r(run),开始运行,到达第一个断点停下来。
此时输入n(next),单步向下执行。
用 p 查看变量值。
也可以display 变量名 设置常显示,undisplay 取消常显示。
c (continue) 直接执行到下一个断点处。
info b 查看断点,
此时修改源代码。
gdb开始调试,输入l main查看main函数
设置两个断点
d 编号 删除指定编号的断点
s (step) 进入函数 (相当于vs的逐语句运行,会进入函数体内部)
调试过程中输入r(run) 重新开始调试
此时在for循环,输入bt查看调用堆栈
使用 until 跳转任意位置。
finish
在main函数执行finish没有意义。
disable 断点 。此时开始调试遇到此断点不会停止。
enable
print
set var 修改 变量的值。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)