共享对象的观察点

时间:2011-06-08 15:37:13

标签: c debugging gdb

如何在.gdbinit中为特定内存位置添加一个观察点,该位置将从共享对象.so中分配到堆上?

如果.so已经加载,则以下内容将起作用:

watch *((TOKEN*)0x084E4C40)

但是我想把它放在.gdbinit中,但这不起作用,因为它不知道TOKEN数据类型,说:

  

当前背景下没有符号“TOKEN”。

如果我等到.so加载,我就可以做到。

对于我能够做到的断点:

set breakpoint pending on

然而,观察点似乎没有任何相似之处。

我唯一可以想象的是在设置观察点之前以某种方式从.so文件中加载调试符号。

但是怎么做?

1 个答案:

答案 0 :(得分:2)

你真的不需要符号,只需要你想要观看的内存块的大小。使用此命令

watch *(char(*)[NNN])0x084E4C40

其中NNNsizeof(TOKEN)