gdb 调试段错误

gdb 段错误 core 文件定位:

注意:源代码编译的时候要加-g选项生成调试信息

1,查看core文件的大小限制: ulimit -c   //如果返回值为0,则表示core文件被禁用;如果返回值为unlimited,则表示core文件大小不受限制   ulimit -a命令查看所有资源限制的详细信息

2, 将其设置为无限制: ulimit -c unlimited

3, core 文件路径: cat /proc/sys/kernel/core_pattern

4, 改变core 文件路径: echo /tmp/core-%e-%s-%u-%g-%p-%t > /proc/sys/kernel/core_pattern
	注:> 用于将输出重定向到文件;
		< 用于将文件内容作为输入;
		>> 用于将输出追加到文件末尾;
		2> 用于将错误输出重定向到文件;
		2>&1 用于将标准错误输出合并到标准输出
		
5,运行core 文件:gdb <可执行文件路径> <core文件路径>    gdb core-a.out-11-0-0-2215-1706064035

6,bt

gdb 调试段错误:
注意:源代码编译的时候要加-g选项生成调试信息

启动程序和调试会话:
gdb <可执行文件>:启动 GDB 并加载可执行文件。
gdb --args <可执行文件> <参数>:启动 GDB 并将参数传递给可执行文件。

设置断点:

break <函数名>:在指定函数的开头设置断点。
break <行号>:在指定行号设置断点。
break <文件名>:<行号>:在指定文件的指定行号设置断点。
break <文件名>:<函数名>:在指定文件的指定函数开头设置断点。

运行程序:

run 或 r:运行程序。
run <参数>:运行程序并传递参数。
continue 或 c:从当前位置继续执行程序。
next 或 n:执行下一行代码,但不进入函数内部。
step 或 s:执行下一行代码,并进入函数内部。

查看变量和堆栈:

print <变量名>:打印变量的值。
info locals:显示当前函数的局部变量。
backtrace 或 bt:显示当前的函数调用堆栈。
frame <帧号>:切换到指定的堆栈帧。
up 和 down:在堆栈帧之间上下导航。

查看内存:

x/<格式> <地址>:以指定的格式查看内存内容。例如,x/x 0x1234 显示十六进制格式的内存内容。
调试信息显示:

list 或 l:显示当前位置周围的源代码。
info breakpoints:显示已设置的断点信息。
info threads:显示当前线程信息。
info registers:显示寄存器的值。

修改程序状态:

set <变量名> = <值>:修改变量的值。
return <表达式>:在当前函数中返回指定的表达式结果。
终止调试会话:

quit 或 q:退出 GDB。

注:很多时候也返回不了堆栈信息,就需要加打印手动缩小范围,重点关注指针,数组等地址操作

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值