【问题标题】:can I find via GDB if a variable belong to heap or stack?如果变量属于堆或堆栈,我可以通过 GDB 找到吗?
【发布时间】:2011-03-09 14:15:55
【问题描述】:

我的断点指向一个变量。 (指向某处。我能确定某处属于堆还是栈?)

有没有办法找到堆栈的开始和结束位置?有没有办法找到堆的开始和结束在哪里?

【问题讨论】:

    标签: c linux gdb


    【解决方案1】:

    使用info proc mappings 获取有关您的内存布局的/proc 信息。

    【讨论】:

    • 这不适用于 GDB 上加载的核心转储。在那种情况下,maintenance info sections 可能会有所帮助。
    • 为完整起见,请在输出的最后一列中添加属于堆栈的地址空间标题为[stack]
    【解决方案2】:

    我认为 gdb 不会直接告诉你,但你可以比较地址以确定它属于哪个范围。您必须查看库源代码才能找到它们,但堆管理器通常会有一些内部变量来跟踪堆的位置。

    【讨论】:

      【解决方案3】:

      根据您的编译器,调试信息中可能有__stack__stack_end 之类的符号。如果是这样,您可以使用这些符号将您的指针与它们进行比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        相关资源
        最近更新 更多