Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 如何直观地描述内存中的堆栈?_Debugging_Gdb - Fatal编程技术网

Debugging 如何直观地描述内存中的堆栈?

Debugging 如何直观地描述内存中的堆栈?,debugging,gdb,Debugging,Gdb,这是一个由两部分组成的问题: 我想知道是否有人知道设计内存堆栈可视化应用程序的免费工具/应用程序?其中包括堆栈信息(例如堆栈指针、返回地址、变量、帧指针…)。我听说Multi(Green Hills)可能会这样做,但当我查看他们的网站时,他们似乎没有提供这样的功能。如果你想不出一个程序可以满足我的要求,那么我会从你能找到的包含堆栈信息的最佳图像中获益(我在谷歌上搜索了“内存堆栈图像”,但它们看起来都非常不同) 我对C编程语言完全陌生,我正在尝试做上述工作。因此,我的第一个问题的结果是如何找到所有

这是一个由两部分组成的问题:

  • 我想知道是否有人知道设计内存堆栈可视化应用程序的免费工具/应用程序?其中包括堆栈信息(例如堆栈指针、返回地址、变量、帧指针…)。我听说Multi(Green Hills)可能会这样做,但当我查看他们的网站时,他们似乎没有提供这样的功能。如果你想不出一个程序可以满足我的要求,那么我会从你能找到的包含堆栈信息的最佳图像中获益(我在谷歌上搜索了“内存堆栈图像”,但它们看起来都非常不同)

  • 我对C编程语言完全陌生,我正在尝试做上述工作。因此,我的第一个问题的结果是如何找到所有堆栈信息,以便将其转换为可视格式?我这样做是为了一个课堂作业,我相信GDB也许能够完成这个任务。我仍在学习如何使用GDB(已经阅读了一些指南),因此如果有人知道如何使用GDB找出程序中通过每个堆栈帧执行的每个步骤的所有变量、返回地址、指针等,那将是非常棒的。如果你知道另一种工具可以简单地实现这一点,那么我很乐意听到它以及如何使用它

  • 非常感谢

    注意:我在这个网站上发现了一些类似的问题,但其中肯定有一个问题没有得到回答或回答含糊不清。我希望有人有几分钟的时间来详细解释,特别是问题2

    操作系统:Linux(Ubuntu) 编程语言:C有两点:

    • 基本上,你需要一种方法来完成这项工作
    • 这是非常依赖于平台的,并且取决于您使用的操作系统和硬件平台。看起来您正在使用linux。对于windows,有可用的本机API
    • 我假设这是针对c程序的,所以您需要了解c调用约定(参数如何放在堆栈上,返回地址存储在哪里等等)
    • 此外,如果ASLR处于活动状态,可能会有额外的困难
    • 对于linux,存在几种API。其中之一是
    [http://pages.cs.wisc.edu/~bart/DynStackwalker.pdf][1]

    有几点:

    • 基本上,你需要一种方法来完成这项工作
    • 这非常依赖于平台,取决于您使用的操作系统和硬件平台。看起来您使用的是linux。对于windows,可以使用本机API
    • 我假设这是针对c程序的,所以您需要了解c调用约定(参数如何放在堆栈上,返回地址存储在哪里等等)
    • 此外,如果ASLR处于活动状态,可能会有额外的困难
    • 对于linux,存在几种API。其中之一是

    [http://pages.cs.wisc.edu/~bart/DynStackwalker.pdf][1]

    为有限的信息道歉。操作系统:Linux(Ubuntu)编程语言:C简言之,我需要一种利用GDB(或其他程序)来“遍历堆栈”的方法正如你所说。你推荐的DynStackwalker似乎需要修改C代码?我努力在不修改代码的情况下遍历堆栈。为有限的信息道歉。操作系统:Linux(Ubuntu)编程语言:C简而言之,我需要一种利用GDB(或其他程序)来正如你所说的“遍历堆栈”。但是你推荐的DynStackwalker似乎需要修改C代码?我努力遍历堆栈而不修改代码。