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

标签 c linux gdb

在类型 flow_t 中,大多数成员的值为零。我想查看哪些成员的值不为0。我使用命令x/1920xb查看内存,但不方便。

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

最佳答案

在 gdb 中没有内置的方法来执行此操作。

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

“老派”方法是结合使用 set loggingshell 来获得您想要的效果:将结果打印到文件,然后 grep for有趣的部分。

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

关于c - 如何使用 gdb 过滤大型结构中的非零成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41113082/

相关文章:

c - 预期声明说明符错误,声明外部堆栈时

c - char string[100] 和 char *string = malloc(100) 之间的区别

regex - sed 不会匹配下一行

linux - centos启动Freeswitch失败?

c - ret2libc攻击不会产生外壳

c - 很难在 C 中将结果相加(For 循环)

c - 如何摆脱字符数组中的垃圾?

linux - 如何在 Makefile 中找到基础架构?

gdb - 如何在gdb中列出当前上下文中的所有变量?

c++ - "i"在当前上下文中不可用