IAR debug: Anzeige von n Werten von einem Pointer

#4804991
Lesenswert?

Hi
sagen wir ich habe einen Pointer mit
int16_t MyArray[100];
int16_t * MyPointer &= MyArray[100];
wie kann ich in Watch window (variable watch window nicht memory) von 
Iar die nächsten 10 Werte anzeigen lassen?
Das geht beides nicht
MyPointer[1:10]
MyPointer[0],10

Weiss wer bescheid?
Persönliche Seite #4805530
Lesenswert?

Kaj schrieb:
> Lies doch bitte erstmal ein C-Buch.

Der oft gutgemeinte Ratschlag ist hier völlig verfehlt. Hier geht es 
nicht um das Programmieren in C, sondern um das /Bedienen eines 
Debuggers/.

1
In windows where you can edit the Expression field, you can specify 
2
the number of elements to be displayed in the field by adding a 
3
semicolon followed by an integer. 
4
For example, to display only the three first elements of an array 
5
named myArray, or three elements in sequence starting with the 
6
element pointed to by a pointer, write:
7

8
myArray;3
9

10
Optionally, add a comma and another integer that specifies which 
11
element to start with. For example, to display elements 10–14, write:
12

13
myArray;5,10
(Quelle: 
http://supp.iar.com/FilesPublic/UPDINFO/007040/arm/doc/EWARM_DebuggingGuide.ENU.pdf, 
Seite 69)
Gast #4806095
Lesenswert?

Rufus Τ. F. schrieb:
> Hier geht es
> nicht um das Programmieren in C, sondern um das /Bedienen eines
> Debuggers/.
Bevor ich mir aber Code im Debugger angucken kann, sollte ich mir 
erstmal darueber im klaren sein, was der Code ueberhaupt macht. Und wenn 
ich mir diesen Code anschaue:
1
int16_t MyArray[100];
2
int16_t * MyPointer &= MyArray[100];
Bevor ich was debuggen kann, brauch ich was, das auch nur im 
entferntesten funktioniert. Und das ist bei diesem Code im leben nicht 
der Fall...
Das compiliert bei mir nicht mal (GCC 6.2.1)
1
expected »=«, »,«, »;«, »asm« or »__attribute__« before »&=« token
2
     int16_t * MyPointer &= MyArray[100];
Wuerde mich schwer wundern, wenn der IAR-Compiler das einfach so frisst.

Der Hinweis, dass es hier um die Bedienung eines Debuggers geht ist ja 
nett, aber das Problem des TO ist ein ganz anderes...

Selbst wenn das &= in dem Codeschnippsel auch nur im entferntesten das 
richtige tun wuerde, waere das Ergebnis (vermutlich) noch immer 
nicht das gewuenschte.
Mir faellt zumindestens spontan kein Grund ein, warum man einen Pointer 
auf ein Element hinter das Array setzen sollte um sich dann da n 
Elementen anschauen zu wollen... aber okay, jeder wie er mag.
(Firma: Torrox.de) #4808681
Lesenswert?

Kaj schrieb:
> Selbst wenn das &= in dem Codeschnippsel auch nur im entferntesten das
> richtige tun wuerde, waere das Ergebnis (vermutlich) noch immer
> nicht das gewünschte.


Meine Güte, stell dich doch nicht so blöd an! Der OT hat da einen 
Vertipper gemacht. Er hat eine Frage zu seinem Debugger und zum 
Verständnis zwei Zeilen Code gepostet (ja, in dem zwei Zeichen 
vertauscht sind!!!).

> Mir faellt zumindestens spontan kein Grund ein, warum man einen Pointer
> auf ein Element hinter das Array setzen sollte um sich dann da n
> Elementen anschauen zu wollen... aber okay, jeder wie er mag.

Ein Zeiger auf das erste und eine Zeiger hinter das letzte Element eines 
Bereichs ist eine durchaus übliche Notation für Bereiche (halb offenes 
Interval). Und wenn der Bereich sehr groß ist und man sich in dem Moment 
nur für das Ende interessiert, dann guckt man halt von hinten drauf.

Hier noch die Lösung für den GDB ;-)
1
p/x *(MyPointer-10)@10

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren