【问题标题】:Get Address of Pointer in gdb获取gdb中指针的地址
【发布时间】:2014-10-02 07:32:18
【问题描述】:

我正在调试一个出现段错误的程序。我想知道指针属于哪个内存空间(堆、堆栈等)。有没有办法在 gdb 中确定这一点?

【问题讨论】:

  • 不确定 gdb 是否内置了一些东西,但您可以随时查看 /proc/<pid>/maps
  • 指针在哪里定义?局部变量?
  • @FiddlingBits 我只担心指针,不知道它是怎么诞生的?虽然 malloc 或其他什么?
  • @username_4567 所以,你只知道地址。明白了。
  • @username_4567 你看过这个yolinux.com/TUTORIALS/GDB-Commands.html吗?你试过stack 命令吗?

标签: c gdb


【解决方案1】:

哪些内存空间(堆、栈等)

请注意,在任何现代多线程系统上,都有许多堆栈区域(每个线程一个或多个),并且通常还有许多堆区域(例如 glibc malloc 将使用sbrk andmmap 从操作系统获取内存页面。这些页面将形成不相交的集合。

有什么方法可以在 gdb 中确定这一点

一般来说,不会。在 Linux 上,您可以检查 /proc/<pid>/maps 并找到与您的指针重叠的区域。 GDB 没有任何特殊的命令可以帮助您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多