GDB调试libstdc++找不到stringstream str()方法
aarch64 gdb debug libstdc++ could not find method stringstream str()
我已经在Fedora21-aarch64中安装了libstdc++-debuginfo包,但是当使用gdb打印stringstream.str()时,我总是得到这个消息:
(gdb) ptype sp
type = class std::tr1::shared_ptr<std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > >
[with _Tp = std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >]
: public std::tr1::__shared_ptr<std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >, (__gnu_cxx::_Lock_policy)2> {
public:
shared_ptr(void);
void shared_ptr<std::basic_stringstream<char> >(std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > *);
}
(gdb) p sp->str()
Couldn't find method std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::str
源代码如下:
std::tr1::shared_ptr<stringstream> sp ( new stringstream(ios_base::in | ios_base::out | ios_base::binary));
std::tr1::shared_ptr<ostream> osp = sp;
osp->write("hello",6);
cout<<sp->str()<<endl;
和我安装的debuginfo包如下:
#debuginfo-install libstdc++
Loaded plugins: auto-update-debuginfo, langpacks
Package gcc-debuginfo-4.9.2-1.fc21.aarch64 already installed and latest version
Package glibc-debuginfo-2.20-5.fc21.aarch64 already installed and latest version
Package gcc-debuginfo-4.9.2-1.fc21.aarch64 already installed and latest version
No debuginfo packages available to install
一般来说,调试时GDB不太擅长调用c++函数。问题是,除非stringstream::str()
函数实际存在于可执行文件中,否则GDB无法调用它,并且该函数通常不存在,要么是因为您没有在程序中使用它,要么是因为它被内联到所有调用者中。
你可以试试:
p sp->_M_stringbuf.str();
或者如果仍然不起作用,则:
p sp->_M_stringbuf._M_string._M_dataplus._M_p
将在stringstream的stringbuf中打印字符串的char*
成员
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- Eclipse,C++方法str()无法解析
- 超级级别的方法称为super具有sub的str attr 实例在循环 实例中创建的方法是作为super的指针存储在向
- StringStream的Str方法将不起作用.(不同类型的串联)(C )
- 将 STR 转换为 int 的简单方法?C++
- 有没有使用 str.substr( ) 在给定位置提取子字符串的替代方法
- GDB调试libstdc++找不到stringstream str()方法