1. ホーム
  2. c++

[解決済み] 標準コンテナ(std::map)の中身をgdbで検査する

2023-01-18 06:27:23

質問

このようなものがあるとします。

#include <map>
int main(){
    std::map<int,int> m;
    m[1] = 2;
    m[2] = 4;
    return 0;
}

プログラムを実行しているマップの内容をgdbから検査できるようにしたいです。

添え字演算子を使ってみると、こうなります。

(gdb) p m[1]
Attempt to take address of value not located in memory.

findメソッドを使用しても、より良い結果は得られません。

(gdb) p m.find(1)
Cannot evaluate function -- may be inlined

これを実現する方法はあるのでしょうか?

どのように解決するのですか?

少なくとも、ソースが最適化されている場合などは、ないと思います。しかし、STLコンテナを検査することができるgdb用のマクロがいくつかあります。

http://sourceware.org/ml/gdb/2008-02/msg00064.html

ただし、私はこれを使わないので、YMMV