2017-12-31 44 views
1

Wir wissen, in C-Sprache, die einen Teil der Werte in Array zu drucken, wenn es ein ArrayWenn gdb verwendet wird, wie in Pascal

int data[100]; 

dann ist in der GDB, können wir Daten drucken [4] Daten [14] eingeben:

print *(data+4)@11 

so stellt sich die Frage: wenn wir in Pascal Sprache programmieren, können wir eine Reihe haben:

var 
    data: array[0..100] of Integer; 

, wenn wir es in gdb debuggen Wie können wir den Wert von Daten [4] auf Daten [14] drucken?

Vielen Dank.

+0

Ich habe es nie versucht, aber was lässt dich denken, dass das anders wäre? Ich denke, Sie sollten in der Lage sein, die gleiche Syntax zu verwenden. Was hast du probiert? –

+0

@RudyVelthuis @data [4]^@ 11 aber fehlgeschlagen. Ich hatte stundenlang gekämpft. –

+0

Aber das ** ist ** eine andere Syntax. Was passiert, wenn Sie das Original '* (data + 4) @ 11' verwenden? –

Antwort

0

Es gibt keine Möglichkeit, dies zu tun, wenn die Sprache von gdb auf Pascal gesetzt ist - niemand hat diese Erweiterung jemals im Pascal-Ausdrucksparser implementiert.

Eine Problemumgehung besteht darin, die Adresse des Arrays zu drucken und dann vorübergehend die Sprache auf C und print *(type *)addr @ ... umzustellen.

Eine andere Problemumgehung wäre, einen neuen gdb-Befehl zu schreiben (entweder mithilfe der CLI oder mithilfe von Python), der das tut, was Sie möchten. Oder, wenn Sie viel Pascal-Debugging durchführen, könnten Sie diese Erweiterung in gdb implementieren - es ist nicht schwer.

Verwandte Themen