2008-09-19 55 views

回答

1

假設你有一個std::wstring str。以下應在gdb工作:

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

(在printf的-l選項使得它的長字符串,我相信你所需要的「call」語句,因爲普通的printf GDB不喜歡該選項。)

0

我做了一些研究,這是gdb PR716,PR1998PR2264。顯然這是一個經常要求的功能,尚未實現。

8

call printf %ls只能有時,而是要讓它在所有的工作在gdb 6.3你需要的void演員和換行此處顯示\n

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

這裏是一個更可靠的命令,你可以把你的。 gdbinit也顯示非ASCII碼點:

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

剛進入wc(簡稱wc_print)與無論是std::wstringwchar_t* 。在http://www.firstobject.com/wchar_t-gdb.htm

的更多細節