c – LLDB:如何检查unordered_map
发布时间:2020-12-14 19:36:52 所属栏目:百科 来源:网络整理
导读:大多数其他STL容器打印正常,但unordered_map是一个烂摊子. 我使用operator对于打印,但这不是关于打印,这是关于我崩溃的时候,我想从LLDB提示打印出我的哈希. 我不能打电话给cout var因为那不起作用. 是否除了例如链接模板函数本身使用cout那甚至会起作用吗?
大多数其他STL容器打印正常,但unordered_map是一个烂摊子.
我使用operator<<对于打印,但这不是关于打印,这是关于我崩溃的时候,我想从LLDB提示打印出我的哈希. 我不能打电话给cout<< var因为那不起作用. 是否除了例如链接模板函数本身使用cout<<<那甚至会起作用吗? (我正在尝试,但它不起作用,因为我必须提前知道模板参数类型将为它生成和链接代码的内容) 解决方法
您应该能够检查unordered_map对象本身,而无需在其上调用方法.
例如,采取这个简单的程序: #include <iostream> #include <string> #include <unordered_map> using namespace std; int main() { unordered_map<int,string> map; map[0] = "mary"; map[1] = "had"; map[2] = "a"; map[3] = "little"; map[4] = "lamb"; return 0; } $clang++ -std=c++11 -stdlib=libc++ -g unmap.cpp -o unmap $lldb unmap Current executable set to 'unmap' (x86_64). (lldb) break set --name main 为简洁起见,未显示lldb输出 (lldb) proc launch n输入5次直到返回0;声明 (lldb) Process 18063 stopped * thread #1: tid = 0x1c03,0x0000000100000aea unmap`main + 1082 at unmap.cpp:15,stop reason = step over frame #0: 0x0000000100000aea unmap`main + 1082 at unmap.cpp:15 12 map[3] = "little"; 13 map[4] = "lamb"; 14 -> 15 return 0; 16 } 17 然后使用p检查对象: (lldb) p map[0] (std::__1::unordered_map<int,std::__1::basic_string<char,std::__1::char_traits<char>,std::__1::allocator<char> >,std::__1::hash<int>,std::__1::equal_to<int>,std::__1::allocator<std::__1::pair<const int,std::__1::allocator<char> > > > >::mapped_type) $2 = "mary" (lldb) p map[1] (std::__1::unordered_map<int,std::__1::allocator<char> > > > >::mapped_type) $3 = "had" (lldb) quit 你使用的lldb版本会有所不同,因为它一直在改进: $lldb -version LLDB-179.5 (即Xcode 5 DP 6命令行包附带的那个) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |