微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 gdb 中打印指针我是否面临堆栈损坏

如何解决无法在 gdb 中打印指针我是否面临堆栈损坏

(gdb) p dst
$9 = (ad_opg__State *) 0x2995cef0
(gdb) p *dst
$10 = <incomplete type>
(gdb) p dst->state
There is no member named state.
(gdb)
(gdb) n
ad_trf::Serialize::serializeRecording (this=this@entry=0x859e00 <<ad_trf::RecordingFactory>::GetInstance()::instance+64>,src=0x2995f110) at Serialize.cpp:379
379                     dst->status = src->m_Status;
(gdb) p dst
$21 = (ad_opg__Recording *) 0x2995cef0
(gdb) p *dst
$22 = <incomplete type>
(gdb) p dst->state
There is no member named state.
(gdb) p *(0x2995cef0)
$23 = -2109491384
(gdb) 
(gdb) p/s  *(ad_opg__Recording *) 0x2995cef0
No symbol "ad_opg__Recording" in current context.
(gdb)

我觉得不完整的类型是因为这些类位于一个单独的模块中,该模块没有启用调试符号(由于文件系统空间不足,我无法这样做。这是一个带有 aarch64 的嵌入式系统)

但我很想知道我是否面临堆栈损坏。因为我至少可以探索 valgrind 选项。

在上面的片段中,我得到这个 -

(gdb) p *(0x2995cef0)
$23 = -2109491384

这是否表明堆栈损坏?我没有详细介绍 ad_opg__State 或 ad_opg__Recording 以及它们之间的关系。了解我是否面临此 gdb 跟踪中的堆栈损坏会有所帮助。任何帮助表示赞赏。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。