首页 > 解决方案 > 在 gdb 调试器中重复 n 次是什么意思?

问题描述

例如:

bool plugin::checkQuality(string &text)
{
    
    string temp = normalizeContent(text, 1);
    
    map<string, int> mapWords;
    matchWords(temp.c_str(), mapWords);
    ...
}

一旦 gdb 进入这个函数,我可以看到这个值:

plugin::checkQuality (this=0x7fffffffd9c0, 
    text="This is a test", ' ' <repeats 20 times>, "c,,,,")
    at /mod/filter/plugin.cpp:59

第二个参数 <repeats 20 times> 是什么意思?第三个参数“c,,,”是什么?函数不是只有一个参数吗?

标签: c++gdb

解决方案


这只是 GDB 如何在一个数组中打印超过 10 个连续相同元素的默认行为。从文档

当数组的连续相同元素的数量超过阈值时,GDB 会打印字符串“<repeats n times>”,其中 n 是相同重复的数量,而不是显示相同的元素本身。

所以在你的例子中,参数的值text似乎是

"This is a test                    c,,,,"

您可以设置在打印之前需要重复多少个字符的阈值

set print repeats <number-of-repeats>

推荐阅读