GDB C++ - 在查看核心转储时检查 STL 容器

GDB C++ - Inspecting STL Containers when looking at a core dump?

本文关键字:转储 检查 STL 容器 核心 C++ GDB      更新时间:2023-10-16

我正在 gdb 中调试我的程序的核心转储(事后分析)。我打开它: GDB [program_name] [core_name]

但是,当我尝试检查 STL 向量时,例如 打印 vec->size()或 打印 VEC->AT(0)

我收到错误

"如果没有调试过程,就无法做到这一点"

我只是想检查这些容器的内容和大小。有没有办法将虚拟进程附加到核心转储 gdb 检查,以便我可以执行此操作?

打印向量:

(gdb) print *vec

然后熟悉实现向量的内部结构并打印原始缓冲区。 通常称为"_M_buffer"或类似的东西。 根据你的完成方式,缓冲区可能有一个内部对象。