4

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

但是,当我尝试检查 STL 向量时,例如 print vec->size() 或 print vec->at(0)

我得到错误

“如果没有调试过程,您将无法做到这一点”

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

4

1 回答 1

2

打印向量:

(gdb) print *vec

然后熟悉实现向量的内部结构并打印原始缓冲区。通常称为“_M_buffer”或类似的名称。根据您的完成方式,缓冲区可能位于其中的内部对象。

于 2012-05-01T15:42:42.560 回答