You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GDB调试器中<repeats n times>是什么意思?为何参数显示与声明不符?

GDB输出参数相关问题解答

1. 为什么函数定义只有1个参数,GDB显示多个参数

你观察到的this=0x7fffffffd9c0是C非静态成员函数的隐含参数:C调用类的非静态成员函数时,会自动将调用对象的内存地址作为this指针传入函数,作为第一个隐藏的入参,所以你显式定义的text参数在GDB输出里显示在第二个位置,整个函数实际运行时的入参只有this和text两个,不存在第三个参数。

2. <repeats 20 times>的含义

这是GDB打印字符串的默认简化规则:当字符串中存在连续的相同字符时,为了避免输出冗余,GDB不会逐个打印重复字符,会用'字符' <repeats 重复次数>的格式输出。你这里的输出表示text对应的字符串在"This is a test"之后,连续出现了20个空格字符。

3. 看起来的第三个参数"c,,,,"是什么

这个内容不是独立的参数,是text字符串内容的一部分。GDB打印长度过长的字符串时会自动换行,换行后的内容因为排版错位很容易被误认为是下一个入参,你当前场景下text的完整内容就是"This is a test" + 20个连续空格 + "c,,,,"拼接而成的完整字符串。

如果需要查看完整的字符串内容,可以在GDB中执行以下命令调整打印规则:

  • 关闭重复字符简化输出:set print repeats 0
  • 关闭字符串长度截断:set print elements 0

内容的提问来源于stack exchange,提问作者marlon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:24:06