2008-09-19 6 views

답변

1

std::wstring str이 있다고 가정합니다.

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

(printf와의 -l 옵션은 긴 문자열 만들고, 나는 보통 GDB printf의 해당 옵션처럼되지 않기 때문에 당신이 "call"문을 필요로 생각합니다.) : 다음은 GDB에서 작동합니다

0

약간의 연구를했는데 gdb PR716, PR1998, PR2264입니다. 분명히 아직 구현되지 않은 자주 요청되는 기능입니다.

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

당신이 당신에 넣을 수 있습니다 더 신뢰할 수있는 명령입니다

8

call printf %ls은 당신이 void 캐스트를 필요로하고 여기에 표시된 \n을 줄 바꿈 가끔 작동하지만, 전혀 GDB 6.3에서 작동하도록 할 수 있습니다. 또한 비 ASCII 코드 포인트이다 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

그냥 wc (wc_print의 줄임말) 입력과를 중 하나 std::wstring 또는 wchar_t* .

자세한 내용은 http://www.firstobject.com/wchar_t-gdb.htm