2016-12-16 5 views
0

私はターミナルからlldbを使ってC++プログラムをデバッグしています。私はそれが特定の文字を印刷しないことを除いてほとんどのもののためにそれを使用することができます。いくつかのポイント私のプログラムは、リモートシステム(vector<unsigned char>)からバイト配列を受け取り、私はその値を印刷するとき、私は次の取得でlldbはターミナル内のすべての文字を表示しません

のXcodeを使用して
[10] = '\0' 
    [11] = '\0' 
    [12] = 'O' 
    [13] = '\b' 
    [14] = '\0' 
    [15] = '\x01' 
    [16] = '\0' 
    [17] = '\0' 
    [18] = '\0' 
    [19] = '\x17' 
    [20] = '\0' 
    [21] = '\x04' 
    [22] = '?' 
    [23] = '?' 
    [24] = '?' 
    [25] = '?' 
    [26] = '\0' 
    [27] = '\0' 
    [28] = 'n' 
    [29] = 'a' 
    [30] = 'm' 
    [31] = 'e' 
    [32] = '\0' 
    [33] = '\0' 
    [34] = '\0' 

私は4 ?マークがされていることがわかります4つに変わった\xff。 lldbにXcodeなしでこれらの文字を正しく印刷させる方法はありますか?

答えて

1

あなたは文字配列の要素の進値を確認したい場合は、GDBの書式synataxのlldbのエミュレーションを使用することができます:使用可能なすべての書式設定オプションが何を参照するには

(lldb) print/x char_vec 

を:

(lldb) help gdb-format 

ところで、私はこれが「正しく印刷されている」と言うのは間違いです。いくつかの0xff値を持つ文字配列がある場合、printfはそれらを '?'として出力します。これがこの値の文字表現です。デフォルトでは、lldbはchar変数をprintfと解釈して出力します。 lldbのデータフォーマッタを使用すると、このデフォルトを16進に変更することができます。参照:

http://lldb.llvm.org/varformats.html

詳細については。

関連する問題