Vscode GDB 查看内存的值

在VSCode的GDB图形界面中,你可以使用"调试控制台(Debug Console)"来查看malloc返回的地址里的值。以下是具体的步骤:

  1. 首先,你需要在你的代码中设置一个断点,这个断点应该在malloc函数调用之后,这样你可以获取到malloc返回的地址。
  2. 然后,开始调试你的程序,当程序运行到你设置的断点时,它会暂停。
  3. 此时,打开"调试控制台(Debug Console)",你可以在这里输入GDB命令。
  4. 假设malloc返回的地址存储在变量ptr中,你可以使用以下GDB命令来查看这个地址里的值:
-exec x/1xb ptr

这个命令会显示从地址ptr开始的一个字节的值,并以16进制的形式显示。

请注意,你需要根据你想查看的内存的类型和长度,来调整x命令的参数。例如,如果你想查看一个整数,你可能需要使用x/1dw来查看4个字节,并以十进制的形式显示。

Vscode GDB 查看内存的值_第1张图片

malloc_usable_size函数是一个在Linux系统中的库函数,它返回一个指向由malloc或相关函数分配的内存块的指针所指向的可用字节数。这个函数的主要用途是用于调试和自省。

关于malloc后的值都是0xbe的问题,这可能是因为在你的系统中,malloc函数在分配内存时,会将新分配的内存初始化为0xbe。这是一种常见的调试技术,用于帮助开发者识别未初始化的内存。这样,如果你在程序中看到0xbe,那么你就知道这块内存是由malloc分配的,但还没有被初始化。请注意,这种行为可能因系统和malloc的实现而异,不是所有系统或malloc的实现都会这样做。在一些系统或malloc的实现中,malloc可能会将新分配的内存初始化为其他值,或者根本不进行初始化。


在 GDB 中,-exec 是一个用于执行 GDB 命令的前缀。例如,如果你想在 GDB 中运行 continue 命令,你可以在 GDB 终端中输入 -exec continue。这将会继续执行你正在调试的程序,直到遇到下一个断点或程序结束。这种方式在你通过其他工具(如 IDE)使用 GDB 时特别有用,因为这些工具可能需要以一种结构化的方式来获取 GDB 的输出。请注意,-exec 前缀并不总是必需的,特别是当你直接在终端中使用 GDB 时。在这种情况下,你可以直接输入 continue 或其他 GDB 命令。

在 GDB 中,-exec 前缀主要在以下情况下使用:

  1. 通过其他工具使用 GDB:当你通过其他工具(如 IDE)使用 GDB 时,这些工具可能需要以一种结构化的方式来获取 GDB 的输出。在这种情况下,你可能需要使用 -exec 前缀来执行 GDB 命令。
  2. 使用 MI(Machine Interface)模式:GDB 提供了一种名为 MI 的接口,它是为了让其他程序(如前端界面或 IDE)能够更好地与 GDB 交互而设计的。在 MI 模式下,你需要使用 -exec 前缀来执行 GDB 命令。

当你直接在终端中使用 GDB 时,通常不需要使用 -exec 前缀。你可以直接输入 continue 或其他 GDB 命令来执行。


基于Ubuntu20.04的环境测试,开了asan对应的值为0xffffffbe,没开asan为全0。
Vscode GDB 查看内存的值_第2张图片

你可能感兴趣的:(我的博客,vscode,gdb)