gdb 不能完全显示长字符问题

原文: http://blog.chinaunix.net/uid-725631-id-3493.html


调试gcc时老是不能显示全字符串

(gdb) p cp->spec
$35 = 0x8057080 "%{E|M|MM:%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)}      %{!E:%{!M:%{!MM:\t  %{save-temps:%(trad_capable_cpp) -lang-c %{ansi:-std=c89}\t\t%(cpp_options) %b.i \n\t\t    cc1 -fpreprocessed %"...

上网找无果,猜猜gdb中有一个值来控制显示多少吧?
直接看gdb源码,发现果然有.
可以使用set print elements命令来控制显示字符串最多字符数,默认是200.

(gdb) set print elements 0

(gdb) p cp->spec          
$36 = 0x8057080 "%{E|M|MM:%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)}      %{!E:%{!M:%{!MM:\t  %{save-temps:%(trad_capable_cpp) -lang-c %{ansi:-std=c89}\t\t%(cpp_options) %b.i \n\t\t    cc1 -fpreprocessed %b.i %(cc1_options)}\t  %{!save-temps:\t    %{traditional|ftraditional|traditional-cpp:\t\ttradcpp0 -lang-c %{ansi:-std=c89} %(cpp_options) %{!pipe:%g.i} |\n\t\t    cc1 -fpreprocessed %{!pipe:%g.i} %(cc1_options)}\t    %{!traditional:%{!ftraditional:%{!traditional-cpp:\t\tcc1 -lang-c %{ansi:-std=c89} %(cpp_options) %(cc1_options)}}}}        %{!fsyntax-only:%(invoke_as)}}}}"

你可能感兴趣的:(gdb,p,长字符串)