利用GDB调试多线程core文件

在linux下程序崩溃时,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的,接下来我们通过一个案例观察怎么利用GDB调试core文件。

在命令行中键入 gdb <可执行文件> < core文件>
这里写图片描述

进入gdb命令行中:
这里写图片描述

键入 bt 可以查看程序终止线程的堆栈:
这里写图片描述
但是有时错误不是发生在这个堆栈上。

键入 info threads 查看所有线程:
这里写图片描述

键入 thread apply all bt 查看所有线程内容:
这里写图片描述

键入 t 85 转换到thread 85中:
这里写图片描述

键入 bt 查看thread 85的堆栈:
这里写图片描述

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用 GDB 调试 MySQL core 文件的案例: 1.获取 MySQL core 文件:在 MySQL 出现异常时,MySQL 会生成一个 core 文件,用于记录程序崩溃时的内存状态。从产生 core 文件的服务器上,将 core 文件下载到分析工具所在的机器上。 2.安装 GDBGDB 工具是 Linux 下的一款调试工具,需要进行安装。如果未安装可以通过以下命令进行安装: ``` yum install gdb ``` 3.开启 core 文件的调试:默认情况下,Linux 禁止 core 文件的调试,需要手动进行开启。在 shell 终端中,执行以下命令: ``` ulimit -c unlimited ``` 4.使用 GDB 配置文件:为了方便进行调试,可以使用 GDB 的配置文件自动加载调试信息。在命令行中输入以下命令: ``` echo "set auto-load safe-path /" > ~/.gdbinit ``` 5.启动 GDB 调试:在命令行中输入以下命令启动 GDB 调试: ``` gdb /usr/sbin/mysqld /path/to/core ``` 其中,/usr/sbin/mysqld 是 MySQL 的可执行文件路径;/path/to/core 是 MySQL 生成的 core 文件路径。 6.分析 MySQL core 文件:在 GDB 调试模式下,可以使用一系列命令查看和分析 MySQL core 文件中的数据和信息。例如: - 使用 bt 命令查看函数调用栈: ``` (gdb) bt ``` - 查看当前 CPU 寄存器的值: ``` (gdb) info registers ``` - 查看当前栈帧的堆栈信息: ``` (gdb) x/20x $rsp ``` 通过以上命令可以定位 MySQL 程序的异常。例如,如果发现异常是由于某个函数中的指针出现了空指针引用,可以通过查看函数调用栈来定位异常所在的函数,然后查看相关的寄存器和堆栈信息来查找引起空指针异常的代码行。 总的来说,使用 GDB 工具对 MySQL core 文件进行分析和调试可以帮助开发人员更好地定位程序异常并进行修复。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值