Wie kann ich wstring in gdb drucken?Wie wstring in gdb drucken
9
A
Antwort
1
Angenommen, Sie haben eine std::wstring str
. Folgendes sollte in gdb arbeiten:
call printf("%ls", str._M_data())
(Die Option -l in printf es eine lange Reihe macht, und ich glaube, dass Sie die „call
“ Anweisung müssen, weil der gewöhnliche gdb printf nicht wie diese Option.)
0
8
call printf %ls
funktioniert nur manchmal, aber um es zu bekommen überhaupt 6.3 Sie in gdb arbeiten müssen die void
Besetzung und Zeilenvorschub \n
hier gezeigt:
call (void)printf("\"%ls\"\n",str.c_str())
hier ist ein zuverlässiger Befehl, den Sie in Ihrem setzen. gdbinit, die auch nicht-ASCII-Code Punkte zeigt:
define wc_print echo " set $c = (wchar_t*)$arg0 while (*$c) if (*$c > 0x7f) printf "[%x]", *$c else printf "%c", *$c end set $c++ end echo "\n end
geben Sie einfach wc
(kurz für wc_print
) entweder mit einem std::wstring
oder wchar_t*
.
Weitere Details unter http://www.firstobject.com/wchar_t-gdb.htm