linux - 如何从截断的 Linux C 程序核心中收集最少的调试数据?有或没有 GDB?
问题描述
如何从截断的 Linux C 程序核心中收集最少的调试数据?
我尝试了几个小时使用相同的程序重现分段故障信号,但我没有成功。我只成功拿到过一次。我不知道如何用 gdb 提取最少的信息。我认为我对 gdb 很有经验,但现在我想我必须再次学习很多东西......也许有人知道除 GDB 之外的另一个调试器来尝试一些东西。我所说的最少信息是指产生段错误信号的调用函数。
我的核心文件是 32MB,GDB 表明需要的核心分配内存是 700MB。如何知道与段错误有关的更深层次的堆栈函数是否在核心文件中被识别?
从文件名中我已经知道了相关的线程名称,但调试程序还不够。我收集了主程序的 /proc/$PID/maps 文件,但我不知道检索 segfault 函数是否有用。
此外,如何知道段错误信号是来自线程内部还是来自线程外部?
解决方案
推荐阅读
- php - Nginx + php-fpm 502 bad gateway 仅在域上
- android - 我可以使用 admob 插页式广告代替奖励广告吗?
- mongodb - 添加已填充集合的新分片时,MongoDB 无法正确扩展
- python - 如何使用正则表达式选择字符串中的第一个 4 个数字序列?
- java - 将参数传递给 REST Web 服务
- node.js - npm i -g nativescript 错误
- d3.js - d3 drag (v5) 是否应该在拖动过程中更新对象基准?
- django - 如何为 django rest 视图集链接 queryset mixin?
- javascript - 如何将 html div 重叠在另一个 div 上?
- c# - 访问令牌验证在 .net core 2.2 中不起作用