GDB 打印内容:const set<Int4> & var_name
gdb to print contents of: const set<Int4> & var_name
我正在尝试修改的C 代码的包装包(不是我的,这既大且可被解释(调用了使用此参数的几种C 方法:
const set<Int4> & var_name
该程序的命令行参数应具有2147483647和2的设置值。似乎表明它们在那里,但是到目前为止,没有运气在GDB中再次出现:
(gdb) p tax_ids.size()
$13 = 2
(gdb) p tax_ids
$14 = std::set with 2 elementsTraceback (most recent call last):
File "/usr/lib64/../share/gdb/python/libstdcxx/v6/printers.py", line 405, in next
item = item.cast(self.type).dereference()['_M_value_field']
RuntimeError: There is no member or method named _M_value_field.
(gdb) p *tax_ids
No symbol "operator*" in current context.
不幸的是,最终提取值的地方是作为嵌套定义的,因此很难确切地看到正在发生的事情。可以肯定的是,尽管它要做的只是使用var_name.begin((或一些类似的方法来创建迭代器,然后重复放出迭代器以提取每个迭代器增量的整数值。有什么方法可以在GDB中做到这一点?
Traceback (most recent call last): ...
此错误表明系统上/usr/share/gdb/python/libstdcxx/v6/...
中安装的GDB STL漂亮打印机do not 与您实际使用的libstdc++
的版本匹配。
可能有几个原因:
- 更新
libstdc++
时,您没有更新libstdc++-dbg
(或实际属于/usr/share/gdb/python/libstdcxx/v6/printers.py
的任何软件包(。 - 您根本不使用
libstdc++
(也许您正在使用libc++
并与Clang构建(
适当的修复将取决于根本原因,而您的问题不包含足够的信息。您必须自己挖一点。
供参考,当STL漂亮打印机和libstdc 确实匹配时,这是输出的样子:
$ cat t.cc
#include <set>
size_t fn(const std::set<int>& foo)
{
return foo.size();
}
int main()
{
const std::set<int> foo = { 3, 7 };
return fn(foo);
}
$ g++ -g t.cc && gdb -q ./a.out
(gdb) b fn
Breakpoint 1 at 0xa86: file t.cc, line 5.
(gdb) run
Starting program: /tmp/a.out
Breakpoint 1, fn (foo=std::set with 2 elements = {...}) at t.cc:5
5 return foo.size();
(gdb) p foo
$1 = std::set with 2 elements = {[0] = 3, [1] = 7}
相关文章:
- EASTL矢量<向量<int>>连续的
- 如何将 int4 数组复制到 int8 向量中
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- C 字符串比较“祝您好运”&gt;“再见”
- GDB 打印内容:const set<Int4> & var_name
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- C 操作员&gt;&gt;与突变器过载
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 是否需要使用 - &gt;运算符在C 中调用成员函数时
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- 错误c++visual studio c2227左侧'->;Init';必须指向类/结构/联合/泛型类型
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- ``这个''不能用this-&gt;指针变量
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 使用shared_ptr<字符串>转换为一个无序集合<字符串>