传递给函数时,Gdb空字符串变为gobbledygook

时间:2016-02-02 21:31:49

标签: c++ gcc gdb

看看下面的gdb输出。回顾一下:endString是一个空字符串,直到它作为参数传递给构造函数。

我很难过。这可能表明堆栈损坏了吗?

367     string endString = fTable[i][endTimeIndex];
(gdb) p endString 
$2 = ""
(gdb) n
369     TimeData endObj = TimeData(endString);
(gdb) step
TimeData::TimeData (this=0xbfb60550, fIsoTime=
    "\000F;\267\370\063(\267\f\361%\267\027\364%\267\023\000\000\000\230\000\000\000\000\300\067\267\004\357\067\267\300\063(\267\300\000\000\000\360\063(\267\364\037(\267\300\063(\267h\326\n\bx\b\266\277,i\031\267\300\063(\267l\361l\267\224I\r\b\314\307k\267\224I\r\b\324\333\r\b\270\b\266\277\265\207\061\267\220\000\000\000l\361l\267\250\b\266\277b\307k\267\344\b\266\277T\n\266\277h\326\n\bl\361l\267l\361l\267\324\333\r\b\330\b\266\277J\304k\267\340\b\266\277\344\b\266\277\330\b\266\277.\275k\267h\326\n\b$\000\000\000\000\000\000\000\230I\r\bl\361l\267\bI\r\b\370\b\266\277\200\276k\267\330\333\r\b\330\333\r\b\bI\r\bp\266k\267<\t\266\277l\361l\267\030\t\266\277\363\266k\267H\333\r\b\330\333\r\b\bI\r\bH\333\r\bl\361l\267l\361l\267X\t\266\277\327\255k\267H\333\r\bF1\031\267\bI\r\bwYh\267\300\063(\267\001\000\000\000\330\333\r\bH\333\r\bX\t\266\277]h\031\267h\t\266\277t\326\n\b\344\361h\267\000\000\000\000x\t\266\277MOh\267\000\000\000\000\000\000\000\000\021\001\000\000 \000\000\000\300"... <Address 0xbfb63000 out of bounds>, __in_chrg=<optimized out>, 
    __vtt_parm=<optimized out>) at TimeData.cpp:164

根据要求:

(gdb) p endString 
$4 = ""
(gdb) p endString.size()
$5 = 0

0 个答案:

没有答案