Autor Beitrag
reox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Do 12.02.09 22:50 
Ich hab derzeit ein sehr merkwürdiges problem mit einem projekt an dem ich gerade arbeite...
Ich baue einen Client - Server auf und versende daten. Soweit alles OK, läuft und macht mir keine probleme. Nachdem die routine abgehandelt ist, schmiert der Server mit einem Windows typischen "Es wurde ein Problem festgestellt und das programm musste beendet werden" ab. Das Merkwürdige: Es ist überall ein try catch(Exeption) gesetzt was ja eigentlich alle Fehler abfangen sollte und in einen Log schreibt.
Wie kann ich jetzt den Fehler finden? Ich hab gar keinen ansatz wo der sein soll, da ich ja nichtmal weiß wo irgend eine exception geschmissen wird... Gibts da nen trick oder so, außer jetzt debuggen was ich irgendwie mit dem VS2008 nicht hinbekomme?
Console.Beep()
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
BeitragVerfasst: Fr 13.02.09 09:25 
Wenn die Ausnahmen in den Log geschrieben werden denke ich mal dass du dort schauen solltest.
Ansonsten einfach jeden Schritt durchgehn^^
(ich vermute mal das im catchblock was passiert ist,bitte korrigiert mich wenn ich mich irre)
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 13.02.09 12:04 
Der Debugger ist dazu da um Fehler zu finden.

Alternativ bleibt dir nur die Glaskugel.


PS: Die Verwendung eines try..catch Blocks löst nicht alle Probleme..

_________________
Delphi: XE - OS: Windows 7 Professional x64
reox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Fr 13.02.09 18:45 
also ich bin nun eher zufällig drauf gekommen woran es lag... Ich hab einen Sockel static definiert (warum weiß ich jetzt auch net mehr) und jetzt gehts.
Gibts da nen Grund warum das Program abstüzt wenn ich bestimmte Objekte static mache?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 13.02.09 19:07 
Static-Felder müssen logischerweise initialisiert werden, bevor die Klasse das erste Mal verwendet wird. Wenn die Klasse keinen statischen Konstruktor besitzt (jetzt wird's implementationsspezifisch), passiert das sogar schon, sobald die erste Methode ausgeführt wird, die auf die Klasse verweist. Die Exception trat also wahrscheinlich auf, bevor überhaupt dein erster try-Block ausgeführt wurde - du bräuchtest einen Block um diese Methode, in ihr ist zu spät.

Also quasi:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
class Foo
{
  static Socket socket = ...;
  static void TuWas();
}

...

void Start()
{
  // HIER wird Foo.socket schon initialisiert
  try {
    ...
    Foo.TuWas(); // oder new Foo()

_________________
>λ=