9

gdbでwstringを出力するにはどうすればよいですか?

4

3 に答える 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*

詳細はhttp://www.firstobject.com/wchar_t-gdb.htmを参照

于 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 に答える
0

私はいくつかの調査を行いましたが、これは gdb PR716PR1998PR2264です。どうやらこれは、まだ実装されていない、頻繁に要求される機能です。

于 2008-09-19T21:45:54.917 に答える