在使用gdb调试过程中,经常需要查看变量的值,最常用的方法:
(gdb) print {变量名}
一般情况下,打印并不存在问题。但当一个字符串比较长时,打印出来的内容不完整,内容的最后为"..."
例如:
(gdb) p (char*)0x23b744a98
$19 = 0x23b744a98 "obbs:S:1.3:{[{1,772830,772830,35513000054164,45514000069401,0,0,15525034,1,7778,-1,0,0,1,1,[{1,7,7,9005,-41600,10402},{1,7,7,9006,-41600,10402},{1,7,7,4002,-1,10402},{1,7,7,4005,17400,10402},{1,7,7,40"...可以看到print显示的内容最后为"..."表示显示的内容并不完整。
问题:
那如何才能将长字符串显示完整呢?如果字符串比较长,又是依据什么来显示字符串呢?
首先,猜测打印的是一个固定长度的字符串,如果超过了默认的最大长度,那只打印默认最大长度的字符串内容,并在其后显示"..."表示打印内容不完整。
那这里的默认最大长度是多少呢?
通过以下命令可以查看:
(gdb) show print elements
Limit on string chars or array elements to print is 200.可以看到默认只会打印200个字符。这个可以通过前面的举例验证。
obbs:S:1.3:{[{1,772830,772830,35513000054164,45