gdb调试

本文整理自邵发C/C++学习指南Linux篇视频、PPT及示例代码

Linux使用gdb命令行进行单步调试

准备工作: compile这一步,添加选项 ‐g


gdb ./helloworld 进入gdb界面


b (break) : 添加断点
r (run): 重头开始运行程序
n (next): 下一步 (等价于VS下的F10单步(函数调用时,直接跳过)
c (continue): 程序继续运行,直到下一处断点,
或者程序运行结束

q (quit): 退出程序界面


添加断点:
b main (加上函数名)
b main.cpp:12 (文件名+行号)
b 12 (当前文件的行号)
b Object::Create (类名 + 成员函数)
显示断点 info break

删除断点 del break 2 (后面的2是编号)


next 执行下一步
n 执行下一步
n 3 执行下面三步


p (print) 显示表达式的值
p a
p a+b


disp (display) 监视变量


x 显示内存的值
x/16xb buf
其中,
16: 显示16个单位
x: 以十六进制显示 (x十六进制 d十进制 u无符号整形 f小数 s字符串  ...)
b: 单位是1字节 (可选 b h w g )

byte1字节, half‐word2字节, word4字节, giant8字节


Linux下,程序中如果进行了不正确的指针操作,
则程序崩溃、提示"Segment Fault"  (core dumped)

如, 空指针访问,野指针访问,数组越界访问

bt (backtrace) 查看错误时刻的栈信息


内存转储
1. 在运行该程序的shell里运行命令
ulimit ‐c unlimited
(注:在shell关闭重启后,要重新运行一次)
2. 运行程序
程序发生段错误时,程序退出,同时当发生错误
时的信息转储(dump)到一个core.*文件。
3. gdb来查看发生段错误的代码位置
gdb helloworld core.***






猜你喜欢

转载自blog.csdn.net/qinglongqishi1/article/details/80377351