Hallo zusammen, ich habe eine neue Funktion in ein bestehendes System implementiert. Es geht um ein Array[4][255] in das 5 Teilnehmer mit jeweils 256 Fehlercodes hineinschreiben. Nun ist es nachweislich so dass in diesem Array ein bestimmter Eintrag von 0 auf 1 gesetzt wird. Richtig! Greife ich später allerdings wieder auf genau diesen Eintrag zu, ist er zurückgesetzt. Minütliche Abfrage der Fehler. Ich bin den Code (die Rücksetzfunktionen) usw. schon komplett durchgegangen um herauszufinden wo dieser Eintrag zurückgesetzt wird, nichts gefunden. Nun würde ich mir gerne im Ram die Speicherzelle beim Schreiben des Eintrags ansehen um später zu überwachen wann die Zelle wieder auf 0 gesetzt wird. Wie könnte ich hier vorgehen um herauszufinden und durch wen die Zelle fälschlicherweise zurückgesetzt wird? Wie kann ich mir den RAM anzeigen lassen? Viele Grüße
Hallo Klaus, das Array sollte bei 5 Teilnehmern und 256 Fehlercodesdann mit "Array[5][256]" definiert werden... Gruß, ebenfalls Klaus
Kann es sein, daß die Variable oder die Indexe falsch declariert sind ?
So, mein Bug habe ich gefunden ... leider immer erst nachdem ich einen Thread erstelle... trotzdem würde mich interessieren wie ich im Eclipse die Speicherzellen des Rams ansehe, bzw. ob die Möglichkeit besteht beim schreiben einer bestimmten Speicherzelle quasi einen Breakpoint zu setzen. Die Definition der Variable ist schon richtig, 5 Teilnehmer (0-4) mit 256 (0-255) codes. War nur falsch ausgedrückt.
>Möglichkeit besteht beim >schreiben einer bestimmten Speicherzelle quasi einen Breakpoint zu --> Watchpoint. Lies' das Manual Deines Debuggers.
Vielen Dank für das Stichwort ;) Allerdings bleibt mir noch ein Problem dass ich trotz div. Anleitungen im Netz nicht lösen kann: Was funktioniert: Ich kann an einer Speicheradresse direkt einen Watchpoint setzen. Was nicht funktioniert: Es ist nicht möglich anhand einer Variable den Watchpoint zu setzen, das ist immer ausgegraut. Außerdem sehe ich zumindest schon Inhalte in den Speicherzellen. Leider aber kann ich keine Veränderung der Inhalte feststellen, immer wenn also der µC läuft (debug, run) und ich später das debuggen pausiere zeigt es den exakten Inhalt der Speicherzellen an. Was ist hier noch zu beachten? Dadurch dass bei einer Variable es nicht funktioniert den Watchpoint zu setzen fehlt mir zusätzlich natürlich die Verbindung zwischen Variable und Speicherzelle, weiß also nicht in welcher Zelle ich den Watchpoint setzen muss. ... zusätzlich kommt natürlich dazu dass sich die Memoryeinträge, warum auch immer, nicht verändern. Könnte mir hierbei jemand helfen?
>>Es geht um ein Array[4][255] in das 5 Teilnehmer mit jeweils 256 >>Fehlercodes hineinschreiben. >Die Definition der Variable ist schon richtig, 5 Teilnehmer (0-4) mit >256 (0-255) codes. War nur falsch ausgedrückt. Ich fürchte NEIN! Mit Array[4][255] deklarierst Du ein Array[0..3][0..254]
Och Leute... bitte... was soll das. Es geht hier nicht um eine Variablendeklaration, die Deklaration ist richtig! Ich habe in meinem erst Post nie geschrieben dass "Array[4][255]" eine Deklaration ist, es kann doch genauso der Zugriff darauf sein. Außerdem habe ich doch schon gesagt dass ich mich diesbezüglich falsch ausgedrückt habe. Außerdem habe ich doch gesagt dass ich meinen Bug gefunden habe ... Es geht aktuell, deswegen macht es nicht unbedingt Sinn seine Antwort aus nicht mehr (!) relevanten Aussagen aufzubauen, um das Debuggen einer Variable per Watchpoint :)
Klaus schrieb: > Ich habe in meinem erst Post nie geschrieben dass > "Array[4][255]" eine Deklaration ist, das IST eine Deklaration. Klaus schrieb: > Es geht aktuell, deswegen macht es nicht unbedingt Sinn seine Antwort > aus nicht mehr (!) relevanten Aussagen aufzubauen Wenn hier nur exakt die Fragen beantwortet würden die der TO stellt, würden maximal 1/3 der Fälle gelöst, die so gelöst werden. Wenn du hier fragst dann musst du damit rechnen, daß die Helfenden dir auch alle anderen Fehler um die Ohren hauen und das ist auch gut so. Und das: Klaus schrieb: > Es geht um ein Array[4][255] Beschreibt eindeutig ein Array in den Bereichen [0..3][0..254] Nimm es einfach zum Anlass dich das nächste Mal präziser auszudrücken und beschwer dich nicht :-)
Udo Schmitt schrieb: > Wenn hier nur exakt die Fragen beantwortet würden die der TO stellt, > würden maximal 1/3 der Fälle gelöst, die so gelöst werden. > Wenn du hier fragst dann musst du damit rechnen, daß die Helfenden dir > auch alle anderen Fehler um die Ohren hauen und das ist auch gut so. Na gut ... das ist richtig! Der erste Hinweis auf die Variable ist ja völlig ok. Aber wenn ich doch schon schreibe: "habe den bug gefunden" und bestätige dass ich mich falsch ausgedrückt habe und die Variable passt .... warum muss ich dann noch mal auf der Ausdrucksweise herumhacken. Ich habe meine Angabe [4][255] schlicht als letzten Eintrag des Arrays gesehen... Vielleicht könnten wir unsere Fragen jetzt auf das Problem das Watchpoints konzentrieren ... mit "debug möglichkeiten" habe ich genau danach im Thread ja gefragt :) Danke trotzdem für reges Interesse!
@Klaus (Gast)
>Och Leute... bitte... was soll das.
Du wärst nicht der Erste, der den Fehler an der falschen Stelle sucht.
Nimm Dich lieber selber an Der Nase, wenn Du nicht mal in der Lage bist
Deine Problemfall korrekt zu formulieren!
Klaus schrieb: > So, mein Bug habe ich gefunden ... leider immer erst nachdem ich einen > Thread erstelle... trotzdem würde mich interessieren wie ich im Eclipse > die Speicherzellen des Rams ansehe, bzw. ob die Möglichkeit besteht beim > schreiben einer bestimmten Speicherzelle quasi einen Breakpoint zu > setzen. noch klarer?! Darauf kam doch schon die richtige Antwort: --> Watchpoint Darauf meine Frage/Probleme ZUM Watchpoint. Warum kommt man also wieder auf den Array-kram zurück?! So, der Thread führt leider zu nichts mehr, vielleicht hat ja doch noch jemand Vorschläge zu (echten) Problemen. Schönen Tag noch zusammen :)
So, also falls jemand ähnliche Probleme hat hier mal ein Update: Wenn ich eine Variable markiere und unter "Run" versuche einen Watchpoint zu setzen ist dieser Button nach wie vor ausgegraut. Allerdings wenn ich im Memory Fenster rechts klicke ist es möglich auf eine markierte Speicherzelle einen Watchpoint zu setzen. Füge ich dann im Dialog unter "Expression to watch" anstatt der Speicheradresse den Variablennamen ein, funktioniert der Mechanismus immer dass je nach Aktion (Schreiben/Lesen) an den Punkt gesprungen wird wo das auftritt. (auch nur bei manchen Variablen obwohl alle global sind mit denen ich das getestet hab) Leider werden im Memory Fenster die Einträge immer noch nicht aktualisiert, sprich, es werden zu Anfang Daten geladen aber nicht mehr "aktualisiert" Ein genaues Betrachten wann eine spezielle Speicherzelle verwendet wird ist also immer noch nicht möglich
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.