如何使用gdb过滤大型结构中的非零成员

时间:2016-12-13 03:00:53

标签: c linux gdb

在类型flow_t中,大多数成员'值为零。我想查看哪些会员'值不是0.我使用命令x/1920xb来观察记忆,但这不方便。

  typedef struct flow {
        ... // There are more than 100 members. Total size is 1920 bytes.
  }flow_t; 

1 个答案:

答案 0 :(得分:1)

在gdb中没有内置方法可以做到这一点。

可以通过一些脚本来完成。像往常一样,有两种基本方法。

旧学校"方法是使用set loggingshell的组合来获得您想要的效果:将结果打印到文件,然后grep搜索有趣的部分。

更新的方法是在Python中编写一个新命令。这不是很难做到;您可以查找现有的pahole脚本,以查看遍历结构定义的示例。