gdbでwstringを出力するにはどうすればよいですか?
8129 次
3 に答える
8
call printf %lsときどきしか機能しませんが、gdb 6.3 で完全に機能させるには、次のvoidキャストと改行が必要\nです。
call (void)printf("\"%ls\"\n",str.c_str())
非ASCIIコードポイントも表示する.gdbinitに入れることができるより信頼性の高いコマンドを次に示します。
wc_print を定義する
エコー "
セット $c = (wchar_t*)$arg0
ながら ( *$c )
もし ( *$c > 0x7f )
printf "[%x]", *$c
そうしないと
printf "%c", *$c
終わり
$c++ を設定
終わり
エコー "\n
終わり
またはのいずれかを使用してwc(の略) を入力するだけです。wc_printstd::wstringwchar_t*
于 2009-09-10T16:48:49.287 に答える
1
を持っているとしますstd::wstring str。以下は gdb で機能するはずです。
call printf("%ls", str._M_data())
call(printf の -l オプションは長い文字列になります。通常の gdb printf はそのオプションを好まないため、" " ステートメントが必要だと思います。)
于 2008-09-19T21:45:10.350 に答える