免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 47279 | 回复: 16
打印 上一主题 下一主题

gdb调试时如何打印string,Vector等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-23 15:08 |只看该作者 |倒序浏览
请高手执教

补充:
比如下面positions是一个int数组,text是一个wstring类型

(gdb) p positions
$8 = {<std::_Vector_base<int,std::allocator<int> >> = {
    _M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>},
      _M_start = 0x36d6630, _M_finish = 0x36d6638, _M_end_of_storage = 0x36d6638}}, <No data fields>}
(gdb) p text
$9 = {static npos = 18446744073709551615,
  _M_dataplus = {<std::allocator<wchar_t>> = {<__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>},
    _M_p = 0x1f97c68}}

[ 本帖最后由 cc007cc 于 2009-4-23 15:22 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-23 15:12 |只看该作者
print Or p

论坛徽章:
0
3 [报告]
发表于 2009-04-23 15:21 |只看该作者
原帖由 alexhappy 于 2009-4-23 15:12 发表
print Or p


晕 当然知道是p 但是看不到里面的数据,比如下面positions是一个int数组,text是一个wstring类型

(gdb) p positions
$8 = {<std::_Vector_base<int,std::allocator<int> >> = {
    _M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>},
      _M_start = 0x36d6630, _M_finish = 0x36d6638, _M_end_of_storage = 0x36d6638}}, <No data fields>}
(gdb) p text
$9 = {static npos = 18446744073709551615,
  _M_dataplus = {<std::allocator<wchar_t>> = {<__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>},
    _M_p = 0x1f97c68}}

论坛徽章:
0
4 [报告]
发表于 2009-04-23 15:33 |只看该作者
p positions

程序里你都会用positions,GDB里你怎么就不会了呢

论坛徽章:
0
5 [报告]
发表于 2009-04-23 16:48 |只看该作者
p可以打印c风格的字符串。
比如string s,那么要打印其中的内容可以这样:p s.c_str()
至于数组,只要答应数组名,所有内容就都列出来了
比如int a[10],那么你用p a就可以打印所有10个数值

论坛徽章:
0
6 [报告]
发表于 2009-04-23 16:54 |只看该作者
我明白了,你的数组是vector的?
自己想一下。
总而言之,只能转化为基本内置类型,才能用gdb打印出来。

论坛徽章:
0
7 [报告]
发表于 2009-04-23 17:29 |只看该作者
前几天刚问过,你可以搜索一下

论坛徽章:
0
8 [报告]
发表于 2009-04-23 18:28 |只看该作者

回复 #1 cc007cc 的帖子

gdb对STL调试没有内建支持。所以只有用gdb脚步。网上有人提供了你需要的脚步,这里:
http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt

论坛徽章:
0
9 [报告]
发表于 2009-04-23 21:56 |只看该作者
原帖由 youshuang 于 2009-4-23 16:54 发表
我明白了,你的数组是vector的?
自己想一下。
总而言之,只能转化为基本内置类型,才能用gdb打印出来。


先谢谢 呵呵

论坛徽章:
0
10 [报告]
发表于 2009-04-23 21:58 |只看该作者
原帖由 皇家救星 于 2009-4-23 17:29 发表
前几天刚问过,你可以搜索一下


方便的话 给个链接吧 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP