2008-09-19 21 views

cevap

1

std::wstring str'unuz olduğunu varsayalım.

call printf("%ls", str._M_data()) 

(printf -l seçeneği uzun bir dize yapıyor ve ben sıradan gdb Printf o seçenek gibi değil çünkü "call" deyimi gerektiğine inanıyorum.): Aşağıdaki gdb çalışması gerekir

0

Biraz araştırma yaptım ve bu, gdb PR716, PR1998, PR2264. Görünüşe göre bu, henüz uygulanmayan, sıklıkla talep edilen bir özellik.

burada
call (void)printf("\"%ls\"\n",str.c_str())

aşağıdaki konularda koyabilirsiniz daha güvenilir bir komut şudur:

8

call printf %ls sadece void döküm ihtiyaç ve burada gösterilen \n linefeed bazen çalışır, ama hiç gdb 6.3 çalışmak için olsun. Ayrıca ASCII olmayan kod noktalarını gösterir gdbinit:

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

sadece wc (wc_print kısaltması) girmek ile ya bir std::wstring veya wchar_t* .

Daha fazla detay at http://www.firstobject.com/wchar_t-gdb.htm

İlgili konular