C++ 带C+的GDB+;传递给函数的子字符串在printers.py to_字符串中溢出

C++ 带C+的GDB+;传递给函数的子字符串在printers.py to_字符串中溢出,c++,printing,gdb,strstr,C++,Printing,Gdb,Strstr,在GDB中,我可以打印一个子字符串,如下所示: (gdb) print outStaticValue.substr(off,len) $16 = "L" 但是,当我通过值将该子字符串传递给函数(例如,edit\u amt\u justify的第二个参数spec)时,目标函数的参数变量是不可打印的。我在函数中遇到以下溢出错误,如果我试图单独打印spec,我会遇到相同的错误: edit_amt_justify (amt=..., spec=Traceback (most recent call l

在GDB中,我可以打印一个子字符串,如下所示:

(gdb) print outStaticValue.substr(off,len)
$16 = "L"
但是,当我通过值将该子字符串传递给函数(例如,
edit\u amt\u justify
的第二个参数
spec
)时,目标函数的参数变量是不可打印的。我在函数中遇到以下溢出错误,如果我试图单独打印
spec
,我会遇到相同的错误:

edit_amt_justify (amt=..., spec=Traceback (most recent call last):
  File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string
    return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
OverflowError: signed integer is greater than maximum
, mp=0x89d6d0) at fmp_mapping_v3_class.cpp:3594
(gdb) next
(gdb) print spec
$17 = Traceback (most recent call last):
  File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string
    return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
OverflowError: signed integer is greater than maximum
我能做的唯一一件事就是在目标函数中放入一个临时字符串变量,并将传递的
spec
变量分配给它,然后我可以检查临时变量,例如:

std::string tmpstr = spec;
但这相当于使用旧的
printf
方法,需要添加自定义代码来调试程序

GNU gdb(gdb)Red Hat Enterprise Linux(7.0.1-42.el5)

有没有办法补救这个错误