2016-12-16 4 views
0

Ich benutze lldb von Terminal, um ein C++ - Programm zu debuggen. Ich kann es für die meisten Dinge verwenden, außer dass bestimmte Zeichen nicht gedruckt werden.lldb wird nicht alle Zeichen im Terminal drucken

Irgendwann mein Programm von einem entfernten System ein Byte-Array empfängt (vector<unsigned char>) und wenn ich drucken diesen Wert ich folgendes erhalten:

[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' 

Xcode Ich kann sehen, dass die vier ? Mark gewesen sein wandte sich an vier \xff. Gibt es eine Möglichkeit, lldb diese Zeichen korrekt ohne Xcode zu drucken?

Antwort

1

Wenn Sie die Hex-Werte von Elementen eines Zeichenfeldes sehen möchten, können Sie LLDB die Emulation der GDB Formatierung synatax verwenden:

(lldb) print/x char_vec 

Um alle verfügbaren Formatierungsoptionen zu sehen:

(lldb) help gdb-format 

BTW, ich bin mir nicht sicher, es ist richtig zu sagen, das ist "Drucken sie richtig ...". Wenn ich ein Zeichen-Array mit einigen 0xff-Werten habe, druckt printf sie als "?". Das ist die Zeichendarstellung dieses Wertes. Standardmäßig druckt lldb Char-Variablen, indem er sie als printf interpretiert. Sie können diesen Standard in Hex ändern, wenn Sie besser mit den Datenformatierern von lldb arbeiten. Siehe:

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

für weitere Details.

Verwandte Themen