Vscode GDB 查看内存的值

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

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

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

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

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。

相关推荐
初圣魔门首席弟子2 小时前
vscode多文件编程bug记录
java·vscode·bug
Maer091 天前
VSCode中Kilo Code插件集成终端输出中文乱码问题解决
ide·vscode·编辑器
半夏微凉半夏殇1 天前
VSCode Remote-SSH:无缝远程开发完全指南
ide·vscode·ssh
名剑走天下2 天前
VScode中模拟lvgl运行环境配置
ide·vscode·编辑器·lvgll
deng-c-f2 天前
配置(4):VScode c/c++编译环境的配置:c_cpp_properties.json
c语言·c++·vscode
闲人编程2 天前
现代Python开发环境搭建(VSCode + Dev Containers)
开发语言·vscode·python·容器·dev·codecapsule
潮汐退涨月冷风霜2 天前
VSCode SSH远程连接失败 最速解决方案
ide·vscode·ssh
烟花落o2 天前
指针深入第二弹--字符指针、数组指针、函数指针、函数指针数组、转移表的理解加运用
c语言·开发语言·笔记·vscode·算法
nvd112 天前
在 vscode 中配置juypter notebook 插件
ide·vscode·编辑器
大江东去浪淘尽千古风流人物2 天前
【vscode】Eigen可视化配置
ide·vscode·编辑器