[C] Speicher beobachten

mc_gulasch

Erfahrenes Mitglied
Aloah, guten Morgen und hallo,

wie ist es denn möglich, einen Speicher (eine Adresse) in C zu beobachten? Ich hab die Adresse und möchte mir zum einen den Wert ausgeben lassen und zum anderen herausfinden, wann sich dieser ändert.
Hintergrund der ganzen Geschichte ist, dass bei mir etwas in einer Schleife (wohl) überschrieben wird, bei der Einzelausführung jedoch nicht.

Danke für Eure Hilfe sagt das Gulasch!
 
Hi.

Dazu kannst du den Debugger benutzen. Da kannst du normalerweise einen Ausdruck oder auch eine Adresse angeben die du überwachen willst. Dann führst du dein Programm schrittweise aus und kannst genau sehen was an der Stelle im Speicher passiert.

Gruß
 
snowtom hat gesagt.:
ich glaube er meinte das so das es ohne Debugger geht und sein Programm das überwacht. Sowas wie Signale.
Und ich glaube er meinte das er einen Fehler im Programm hat, wo irgendwie der Speicher überschrieben wird oder auch nicht.

Was sagt denn mc_gulasch dazu? ;-]

Gruß
 
deepthroat hat gesagt.:
Und ich glaube er meinte das er einen Fehler im Programm hat, wo irgendwie der Speicher überschrieben wird oder auch nicht.
Zumindest vermute / befürchte ich das.
Im Debugger von MSVC++ hab ich jetzt dieses Memory - Fenster gefunden, allerdings kann ich dabei nur eine Adresse beobachten, bräuchte aber drei, ausserdem wenn ich das so lange mach, bis was passiert, darf ich bis zu 2600 x auf meine Maus einprügeln. Gibt es die Möglichkeit dem Debugger zu sagen:
Mach solange sich da nix ändert, aber wenn, dann.....?
 
Ich weiß nicht inwieweit der Visual C++ Debugger das unterstützt aber normalerweise kann man Watchpoints hinzufügen die dann bei einer bestimmten Bedingung das Programm anhalten.

Gruß
 
Du kannst auch im Überwachungsfenster z.B. mit '*0x23456789' den Inhalt der Speicherstelle 0x23456789 beobachten. Evtl. mußt du noch einen Typecast machen: '*((int*)0x23456789)'
 
deepthroat hat gesagt.:
Dazu kannst du den Debugger benutzen. Da kannst du normalerweise einen Ausdruck oder auch eine Adresse angeben die du überwachen willst. Dann führst du dein Programm schrittweise aus und kannst genau sehen was an der Stelle im Speicher passiert.
Ich weiß ;) Leider halt immer nur eine und nicht mehrere parallel. Dann dauerts zwar länger, aber man lernt sein Programm besser kennen (nicht schätzen).
 
Zurück