如何在.gdbinit
中为特定内存位置添加一个观察点,该位置将从共享对象.so
中分配到堆上?
如果.so已经加载,则以下内容将起作用:
watch *((TOKEN*)0x084E4C40)
但是我想把它放在.gdbinit中,但这不起作用,因为它不知道TOKEN数据类型,说:
当前背景下没有符号“TOKEN”。
如果我等到.so加载,我就可以做到。
对于我能够做到的断点:
set breakpoint pending on
然而,观察点似乎没有任何相似之处。
我唯一可以想象的是在设置观察点之前以某种方式从.so文件中加载调试符号。
但是怎么做?
答案 0 :(得分:2)
你真的不需要符号,只需要你想要观看的内存块的大小。使用此命令
watch *(char(*)[NNN])0x084E4C40
其中NNN
为sizeof(TOKEN)
。