如何在gdb中打印std :: map值

时间:2010-04-21 12:56:56

标签: c++ linux debugging gdb

我有一个std :: map< std :: string,std :: string>续;

我想在gdb中看到cont [“some_key”]。当我在尝试时

p cont [“some_ket”]

我收到此消息:您尝试传递给operator []的其中一个参数无法转换为函数所需的内容。

我正在使用GNU gdb Red Hat Linux(6.3.0.0-1.162.el4rh)。感谢

3 个答案:

答案 0 :(得分:6)

您可以编写自己的转储功能并调用它们:

(gdb) call dump(m)

看到这个帖子: http://www.mail-archive.com/help-gplusplus@gnu.org/msg02109.html

我对GDB助手宏感到好奇。

答案 1 :(得分:6)

最新的gdb有python支持,因此可以轻松编写一个函数来打印出任何stl结构的内容。但是,您必须学习API并编写脚本。幸运的是,gcc 4.5将附带所需的python脚本,以使gdb能够智能地处理stl数据结构。

编辑:您不必等待GCC 4.5(顺便说一下已经发布),您可以grab the code from SVN

答案 2 :(得分:1)

Gdb不理解C ++运算符重载。