解释GDB输出

时间:2015-11-13 23:13:47

标签: c++ gdb

我没有太多使用过GDB。通常我会检查简单变量,但从不检查类。这次我正在检查课程,因为我正在开始一个新项目(LLVM)。

这是

的输出

disp CachedTable

CachedTable = {<llvm::DenseMapBase<llvm::DenseMap<std::pair<unsigned int, unsigned int>, unsigned int, llvm::DenseMapInfo<std::pair<unsigned int, unsigned int> > >, std::pair<unsigned int, unsigned int>, unsigned int, llvm::DenseMapInfo<std::pair<unsigned int, unsigned int> > >> = {<No data fields>}, Buckets = 0x1a9e190, NumEntries = 2, NumTombstones = 0, NumBuckets = 64}

如何解释此输出?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是llvm::DenseMap类数据成员的输出 (http://llvm.org/docs/doxygen/html/DenseMap_8h_source.html

输出的第一部分意味着它的基类llvm::DenseMapBase没有数据成员:

<llvm::DenseMapBase<llvm::DenseMap<std::pair<unsigned int, unsigned int>, unsigned int, llvm::DenseMapInfo<std::pair<unsigned int, unsigned int> > >, std::pair<unsigned int, unsigned int>, unsigned int, llvm::DenseMapInfo<std::pair<unsigned int, unsigned int> > >> = {<No data fields>}

其余输出打印llvm::DenseMap个数据成员值:

Buckets = 0x1a9e190, NumEntries = 2, NumTombstones = 0, NumBuckets = 64

通常很难解释这样的一行输出,特别是对于来自未知代码的长结构/类,所以打开gdb的漂亮打印模式是值得的:

(gdb) set print pretty on 

请参阅Print Settings

set print pretty on
    Cause gdb to print structures in an indented format with one member per line, like this:

              $1 = {
                next = 0x0,
                flags = {
                  sweet = 1,
                  sour = 1
                },
                meat = 0x54 "Pork"
              }
相关问题