it-swarm.com.de

Wie zeige ich in Clions Debugger den gesamten Inhalt eines int-Arrays an?

Im Moment wird nur das erste Element des Arrays angezeigt, aber ich möchte eine Ansicht aller Elemente im Array. Ich denke, Clion benutzt GDB.

EDIT: Ich beziehe mich speziell auf Arrays auf dem Heap. Arrays auf dem Stapel können visualisiert werden. 

16
Embedded_Mugs

Leider unterstützt CLion diese Funktion derzeit nicht. Wie von JetBrains Mitarbeiter vorgeschlagen , können Sie eine Problemumgehung verwenden. Verwenden Sie im Fenster Evaluate/Watches den folgenden Ausdruck:

(MyType[128])myArray

Sie können eine beliebige Arraygröße verwenden. Was auch immer für dich funktioniert.

Wenn Ihr Array in der Variable void * gespeichert ist, müssen Sie etwas komplizierter machen:

(MyType[128])*(char*)myArray

Bitte stimmen Sie dieses Problem zu, um die Chance auf eine echte Lösung zu erhöhen. Klicken Sie dazu rechts auf der Seite auf das kleine Daumensymbol.

18
cubuspl42

Die Antwort von cubuspl42 funktioniert für GDB. Wenn Sie jedoch auf einem Mac mit LLDB als Debugger arbeiten, ist dies die richtige Methode

(MyType(*)[128])myArray

Hoffe das hilft!

25

Sie können Vorlage und Referenz verwenden: 

template<int N>
void foo1(int (&arr)[N])
{
    ...
}

Wenn Sie das Array an eine andere Funktion übergeben möchten, sollte die übergebene Funktion auch eine Vorlage und eine Referenz für das Array verwenden: 

template<int N>
void foo2(int (&arr)[N])
{
    ...
}
template<int N>
void foo1(int (&arr)[N])
{
    foo2(arr);
}

Mit dieser Methode können Sie den gesamten Inhalt eines int-Arrays in clion anzeigen

1
陳 力

Jede Syntax, die der zugrunde liegende Debugger versteht, sollte tatsächlich funktionieren. Im Fall von GDB könnten Sie zum Beispiel *[email protected], wobei array ein beliebiger Zeigerausdruck und size ein beliebiger (positiver) ganzzahliger Ausdruck sein kann und beide Variablen, Funktionsaufrufe, Register und alles enthalten können, was GDB versteht. So etwas wäre zum Beispiel gültig:

*((int*)$rsp - 0x100)@get_size(data)
1
EvgEnZh