| 

.NET C# Java Javascript Exception

1
Bei meinem C#-Programm will ich einen Conditional Breakpoint setzten.
In der Bedingung steht folgendes:
"123456" == abc.ID
Wobei abc eine Objekt ist und ID ein Attribut vom Typ string.

Nun wird beim überprüfen des Breakpoints der Fehler "Invalid Condition Value" geworfen.

In der ID steht auch wirklich ein String drin! und die Instanz der Klasse exisitiert natürlich auch.
09.10.2009
Arade 225 1 5
Arade 225 1 5
1
Bringt Visual Studio dir keine weiteren Informationen zur Fehlermeldugn "Invalid Condition Value"?
codemurai 09.10.2009
1
nein keine weitere Info
Arade 09.10.2009
1
Wenn die Klasse nicht existieren würde dann ließe sich der Code nicht kompilieren. Du meinst 'und die Instanz der Klasse existiert natürlich auch' ;)
gfoidl 09.10.2009
1
@gfoidl Ja klar! Habs geändert ;) Kannst du nicht editieren? *fg*
Arade 09.10.2009
1
Ja stimmt könnte ich - hab's vergessen ;)
gfoidl 09.10.2009
3 Antworten
2
Ich kann keine Lösung für dein Problem geben, aber eine Alternative.
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo { ID = "12345" };

if (foo.ID == "12345")
System.Diagnostics.Debugger.Break();
}
}

class Foo
{
public string ID { get; set; }
}

Dabei wird die Bedingung explizit geprüft und dann der Debugger aufgerufen.
09.10.2009
gfoidl 9,4k 3 5
gfoidl 9,4k 3 5
1
"Kann keine Lösung für dein Problem geben" - Warum? :) für was gibt es denn sonst Conditional Breakpoints?
Arade 09.10.2009
1
In der Express-Version sind diese nicht vorhanden (es gibt sicher Benutzer die dieses Feature in der Express-Version nutzen möchten) und außerdem kann über dies Möglichkeit der CLR-Debugger auch außerhalb von VS gestartet werden.
gfoidl 09.10.2009
1
Beantwortet mir aber nicht das "Warum" - Ich benutze auch keine Express Version und der CLR Debugger wurde auch nicht von extern gestartet.
Arade 09.10.2009
1
Ich kann deshalb keine Lösung für dein Problem geben da ich es nicht reproduzieren kann und mir das Problem noch nie untergekommen ist und daher weiß ich nicht wie ich eine potenzielle Lösung formulieren sollte.
gfoidl 09.10.2009
1
Ah ok, das ist aber etwas anderes als es kann keine lösung geben! :)
Arade 10.10.2009
1
Jetzt verstehe ich was du meinst. Ich habe das 'Ich' als erstes Wort der Antwort vergessen -> somit ist der 1. Satz zweideutig ;)
gfoidl 10.10.2009
2
Typische Fehlerquellen sind:

  • = statt == in der Bedingung (z. B. "123456" = abc.ID)
  • Vergleich einer statischen Eigenschaft bei einem Objekt,
    ID ist also eine statische Eigenschaft der Klasse Foo, abc ist ein Objekt dieser Klasse
  • Vergeich einer Instanzeigenschaft bei einer Klasse,
    ID ist also eine Instanzeigenschaft, abc aber eine Klasse und kein Objekt


Trifft einer dieser Punkte zu?
09.10.2009
codemurai 109 2
1
Habe mein Beitrag korrigiert: abc ist ein objekt und ID eine Instanzeigenschaft.
Arade 09.10.2009
1
Das würde aber bereits der Kompiler melden ;)
gfoidl 09.10.2009
1
Wenn es so im Source Code stehen würde, dann würde der Compiler meckern. Bei einem Conditional Breakpoint allerdings nicht. Dieser wird zur Laufzeit ausgewertet. Daher kommt auch der Fehler erst zur Laufzeit
codemurai 13.10.2009
1
Könnte es sein, dass irgendwann in deinem Code abc null ist?
Dann gibt es einen Fehler bei der Auswertung von "asd" == abc.ID
Denk dran, dass die Breakpoint-Condition jedesmal ausgewertet wird, wenn der Code durchlaufen wird.
Beispiel:
int i = 0;
SomeClass abc = null;
while( i<10 )
{
if( i > 5 )
abc = new SomeClass();
i++; // hier der Conditional Breakpoint und schon kracht es
}
10.10.2009
DaSpors 4,2k 2 8
1
Danke für die hilfreiche Antwort
Arade 14.10.2009

Stelle deine Visual-studio-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH