2014-10-14 8 views
8

Ich habe ein Problem mit dem Debuggen ... Plötzlich kann ich nicht die Werte der meisten Variablen während des Debuggens sehen. Ich habe es geschaffen, zwei verschiedene Nachrichten in den Direkt-Fenstern zu erhalten:Kann keinen Wert erhalten, weil es weg optimiert wurde

Wert kann nicht von lokalen oder Argumente ‚Parametern‘ erhalten, wie es in diesem Befehlszeiger nicht verfügbar ist, möglicherweise, weil es weg optimiert wurde.

und

Interner Fehler in der Ausdrucksauswertung.

Ich habe versucht, und überprüft die folgenden Dinge:

  1. Lösungskonfiguration wird auf debug (nicht release)
  2. Projekt -> Einstellungen -> Build -> Code optimieren ist nicht
  3. Werkzeuge -> Optionen -> Debuggen -> Verwenden Managaed Kompatibilitätsmodus (nicht funktioniert)

Haben Sie weitere Ideen, wie ich wieder richtig debuggen kann? :(

Vielen Dank im Voraus

bearbeiten Der Code ist nichts besonderes .. es passiert, wenn ich versuche, zu sehen, was in Parameter ist [Key]

public void AddOrUpdateQuartzJob(string jobName, IList<KeyValuePair<string, string>> parameters) 
    { 
     var jobDetail = this.GetJobDetail(jobName); 

     if (jobDetail != null) 
     { 
      foreach (var parameter in parameters) 
      { 
       jobDetail.JobDataMap[parameter.Key] = parameter.Value; 
      } 
     } 
     else 
     { 
      this.ScheduleNewJob(jobName, parameters); 
     } 
    } 
+0

Können Sie den Code teilen? – Amorphis

+0

Ja, ich habe den ursprünglichen Beitrag – xeraphim

+0

bearbeitet, wenn Sie in "if (jobDetail! = Null)" sind. Was ist in Parametern kurz vor dem Absturz? –

Antwort

5

Der beste Weg, ich habe gefunden convince the JIT compiler not to optimize the code is to use an INI file with the name of the assembly in the same folder the assembly is in with the contents:

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1 
AllowOptimize=0 

Beachten sie, dass es der Name der Versammlung sein muss, nicht na die ich von der Prozess-EXE (es sei denn, es ist die EXE-Assembly, die Sie debuggen möchten). Z.B. Wenn Sie eine Baugruppe haben MyCode.dll der INI-Dateiname wäre MyCode.ini.

Hier sind einige Dias von a presentation on .Net debugging, die den Unterschied zeigen:

Mit Optimierung:

Debugging with optimization

Ohne Optimierung:

Debugging without optimization

1

Gehe zu -> Projekteigenschaften -> unter Build -> setze "Code optimieren" checkbox unchecked.

Auch unter Projekteigenschaften -> Build -> Erweitert -> stellen Sie die "Debug Info" Dropdown-Liste "Full" in den Optionen

0

Nachdem Sie die Änderungen durch codekaizen und isanka thalagala aufgeführt zu machen, nicht vergessen zu reinigen, neu zu erstellen und zu veröffentlichen, um die Änderungen wirksam zu machen.

Verwandte Themen