当前位置:  开发笔记 > 编程语言 > 正文

如何使用icc编译器检查gdb中std :: vector的内容?

如何解决《如何使用icc编译器检查gdb中std::vector的内容?》经验,为你挑选了1个好方法。

我想在gdb中检查std :: vector的内容,但是我没有访问_M_impl,因为我使用的是icc,而不是gcc,我该怎么做?让我们说它是一个std :: vector为了简单起见.

这里有一个非常好的答案,但如果我使用icc,这不起作用,错误消息是"没有名为_M_impl的成员或方法".这里似乎有一个很好的调试工具集,但它也依赖于_M_impl.



1> Mic..:

不确定这适用于你的矢量,但它对我有用.

#include 
#include 

int main() {
    std::vector vec;
    vec.push_back("Hello");
    vec.push_back("world");
    vec.push_back("!");
    return 0;
}

GDB:

(gdb) break source.cpp:8
(gdb) run
(gdb) p vec.begin()
$1 = {
   _M_current = 0x300340
}
(gdb) p $1._M_current->c_str()
$2 = 0x3002fc "Hello"
(gdb) p $1._M_current +1
$3 = (string *) 0x300344
(gdb) p $3->c_str()
$4 = 0x30032c "world"

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有