none
static Variablen in Methoden von Klassen lassen sich nicht Debuggen/Überwachen RRS feed

  • Frage

  • Hi Leute,

    wie die Überschrift schon sagt habe ich in einer Methode einer Klasse mehrere static Variablen angelegt. Ich möchte halt dass deren Werte auch beim erneuten Aufruf der Methode stets den zuletzt zugewiesenen Wert haben. Das klappt auch wunderbar, es compiliert ohne Fehler und das Programm funktioniert auch richtig, nur kann ich diese Variablen nicht Debuggen! Wenn ich mir diese static Variablen im Überwachen Fenster ansehen möchte, dann steht da:

    Fehler: Der Bezeichner "variable" liegt außerhalb des gültigen Bereichs.

    Warum ist das so? Darf man in Klassen-Methoden keine static Variablen verwenden? Muss man so etwas immer über "globale" Klassenfelder machen? Ich möchte halt nicht das andere Methoden der Klasse diese Variablen sehen/verändern können.

    Mittwoch, 29. Juni 2011 14:22

Antworten

  • Wo postet man solche Bugs bei Microsoft?

    http://connect.microsoft.com/VisualStudio

    Ich kenn mich mit C# nicht aus. Das es in C# Klassen gibt, hab ich schonmal neben bei aufgeschnappt, aber gibts da auch static Variablen. Es wäre mal interessant zu wissen ob man dieses Problem auch im C# mit VS2008 hat.

    Mit Sicherheit nicht.... DU musst das static nur als Member anlegen und nicht in einer Methode...


    Jochen Kalmbach (MVP VC++)
    Donnerstag, 30. Juni 2011 09:27

Alle Antworten

  • Welche VS-Version? VC6?

    Ab VS2002 funktioniert das problemlos... zumindest bei mir..


    Jochen Kalmbach (MVP VC++)
    Mittwoch, 29. Juni 2011 15:23
  • Echt, bei dir funktioniert das? Hab VS 2008 Prof. Ed.

    Es handelt sich also um ein Problem meines Visual Studios, und nicht um einen Programmierfehler?! Hier ein Beispielcode:

    System::Void Form1::timer1_Tick(System::Object^ sender, System::EventArgs^ e)
    	{
    	static unsigned char test = 0;
    	test++;
    	}

    Den Wert der Variable "test" seh ich im Debugger nicht, da steht nur oben genannter Fehler davor. Ich benutze halt keine verwalteten Variablen... vllt macht das bei static Probleme.


    Donnerstag, 30. Juni 2011 06:25
  • Sorry.. meine andere Antwort war falsch....

    In VS2008 hab ich das gleiche Problem ;)

    Noch ein Grund mehr kein C++/CLI für WinForms oder andere nicht InterOp DInge zu verwenden.

    Mit VC2010 geht das auch nicht...


    Jochen Kalmbach (MVP VC++)
    Donnerstag, 30. Juni 2011 08:35
  • Dank dir für den Test Jochen.

    Mhn.. das ist ja ein mieser BUG. Aber beruhigt mich schonmal das es kein Programmierfehler von mir ist. Wo postet man solche Bugs bei Microsoft?

    Ich hab mir jetzt über 'nen Umweg geholfen: immer wenn ich eine dieser static Variabelen debuggen möchte, erstelle ich mir eine zweite Testvariable des gleichen Typs nur eben OHNE static. Dann kopiere ich an der Codestelle, wo ich den Wert der static Var wissen möchte, deren Wert in diese Testvar hinein. Die Testvar kann der Debugger auflösen und ich kann den Wert sehen.

    Ich kenn mich mit C# nicht aus. Das es in C# Klassen gibt, hab ich schonmal neben bei aufgeschnappt, aber gibts da auch static Variablen. Es wäre mal interessant zu wissen ob man dieses Problem auch im C# mit VS2008 hat.


    Donnerstag, 30. Juni 2011 08:59
  • Wo postet man solche Bugs bei Microsoft?

    http://connect.microsoft.com/VisualStudio

    Ich kenn mich mit C# nicht aus. Das es in C# Klassen gibt, hab ich schonmal neben bei aufgeschnappt, aber gibts da auch static Variablen. Es wäre mal interessant zu wissen ob man dieses Problem auch im C# mit VS2008 hat.

    Mit Sicherheit nicht.... DU musst das static nur als Member anlegen und nicht in einer Methode...


    Jochen Kalmbach (MVP VC++)
    Donnerstag, 30. Juni 2011 09:27
  • Danke für den Link, da scheints allerdings ausschließlich um VS2010 zu gehen.

    Alles als Member/Felder anlegen gänge auch, möchte ich aber nicht, da diese Variablen von anderen Methoden der Klasse nicht veränderbar sein sollen.

    Donnerstag, 30. Juni 2011 09:51
  • > Danke für den Link, da scheints allerdings ausschließlich um VS2010 zu gehen.

    Tatsächlich... man kann kein Feedback mehr für VS200x geben... traurig...


    Jochen Kalmbach (MVP VC++)
    Donnerstag, 30. Juni 2011 10:01