c - 在gdb中,是否可以找出哪个内存地址具有某个值?

标签 c debugging memory-management gdb memory-address

例如,我想找出哪个内存地址存储值 0xbffff5a0。 gdb可以给我一个一定范围内有这个值的地址列表吗?

最佳答案

简短的回答是肯定的。

GDB 提供了宏语言工具。您可以定义一个宏函数来遍历地址范围,并与提供的值进行比较。这没有经过测试,但宏可能看起来像这样:

define findvalue
 set $val=$arg0
 set $p=(char *)$arg1
 set $e=(char *)$arg2
 while ($p < $e)
  if ($val == *(int *)$p)
   print (int *)$p
  end
  set $p=$p+1
 end
end

关于c - 在gdb中,是否可以找出哪个内存地址具有某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19204752/

相关文章:

c - 从多线程应用程序生成进程

ruby-on-rails-3 - 如何使用rails pry调试器进入?

c - 获取 Debug Build 下 main() 函数的地址

sorting - 优化redis排序集内存使用

c - 如何使用内核模块直接访问保留内存?

c - 浮点大小、矩阵乘法、OpenCL、套接字。诡异的

c - 如何使用 SWIG 包装带有可变参数的 C 函数

c++ - 为遗传算法分配和检索按位存储值

我可以从 SIGSEGV 处理程序中终止另一个进程吗?

java - 是否可以在变量访问/写入时停止 Debug模式的执行?