Zum Inhalt springen

Programm crashed


tschulian

Empfohlene Beiträge

Guten Morgen,

eines meiner Programm verabschiedet sich sporadisch mit folgendem Fehlercode:

Problem signature:

  Problem Event Name:	CLR20r3

  Problem Signature 01:	guard.exe

  Problem Signature 02:	1.0.0.0

  Problem Signature 03:	5591bc4d

  Problem Signature 04:	System.Data

  Problem Signature 05:	4.0.30319.17929

  Problem Signature 06:	4ffa5c76

  Problem Signature 07:	2275

  Problem Signature 08:	5e

  Problem Signature 09:	System.Data.SqlClient.Sql

  OS Version:	6.1.7601.2.1.0.256.48

  Locale ID:	1033

  Additional Information 1:	0a9e

  Additional Information 2:	0a9e372d3b4ad19135b953a78882e789

  Additional Information 3:	0a9e

  Additional Information 4:	0a9e372d3b4ad19135b953a78882e789


Read our privacy statement online:

  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409


If the online privacy statement is not available, please read our privacy statement offline:

  C:\Windows\system32\en-US\erofflps.txt

Das Programm schreibt viel in MSSQL Datenbanken und hat sehr viele User IN/Outputs.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na loggt ihr in eurer Anwendung nicht mit, was sie tut? Wie wollt ihr denn sonst nachverfolgen, was schief läuft - oder auch nur protokollieren, was die Anwendung macht?

Sieht nach einer unbehandelten Ausnahme aus.

Bau einen UnhandledExceptionHandler ein und lass dir die Ausnahme, am besten mit Stacktrace, anzeigen.

Damit kenn ich mich recht wenig aus...

Gibts da so einfache wege wie in php z.B am Kopf des Dokuments ein error_report(1); ?

Ich kenn wirklich nur Basics...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tritt der Fehler auch auf deinem Rechner auf, oder nur auf anderen? Falls ersteres: Mache dich mit dem Debugger vertraut.

Was die Fehlerdiagnose angeht, habe ich dir einen Suchbegriff gegeben: UnhandledExceptionHandler

In einer Suchmaschine eingeben, Dokumentation zu AppDomain.UnhandledException finden, den Beispielcode verstehen und anwenden.

Ich glaube, Logging ist nicht das, was du dir darunter vorstellst. Das passiert nicht automatisch durch Einschalten eines Sprachfeatures. Das musst du selbst im Code tun. Das ist hier zumindest kurzfristig der falsche Ansatz, da du das Programm vermutlich nicht gut genug kennst, dass du sagen könntest, was genau es wo macht. Auf lange Sicht ist das natürlich sehr nützlich. Aber zuerst solltest du eingrenzen, wo im Code der Fehler auftritt. Und dazu solltest du die unbehandelte Ausnahme, die das Programm abstürzen lässt, fangen und die Meldung und den Stacktrace ausgeben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, also heute nacht lief das tool auf zwei servern und auf beiden ist es ca. gleichzeitig abge****t. Wirklich auf die Sekunde genau.

Ich hab mir die Artikel durchgelesen werde daraus aber nicht schlau.

Also da in dem Fehler sowieso etwas von SQL steht und der fehler auf beiden Programmen zur gleichen Zeit aufgetreten ist, muss ich ja diesen exception log einfach mal bei den SQL Functionen reinschreiben bzw. dort wo auf die datenbank zugegriffen wird.

Ist das sowas was ich suchen würde?

Bearbeitet von tschulian
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also da in dem Fehler sowieso etwas von SQL steht und der fehler auf beiden Programmen zur gleichen Zeit aufgetreten ist, muss ich ja diesen exception log einfach mal bei den SQL Functionen reinschreiben bzw. dort wo auf die datenbank zugegriffen wird.
Bevor du die Exception loggen kannst, musst du sie zuerst einmal fangen. Wenn du weißt, wo im Code die relevanten Stellen sind, an denen try/catch fehlt, ist das ein Weg. Aber wenn du das wüsstest, hättest du das Problem schon beheben können.

Ein globaler Handler für unbehandelte Exceptions ist einfacher.

Ist das sowas was ich suchen würde?
Wenn du deine Kenntnisse aus solchen Videos hast, wundert mich gar nichts mehr.

Der Ansatz fürs Loggen ist nicht falsch. Aber in dem Video wird die Exception weder geworfen noch gefangen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

mir wieder immer weniger klar was genau das Problem ist. Du hast den Quelltext zu dem o.a. Programm? Kannst du den Fehler nachstellen? Tritt das also immer zu einem bestimmten Zeitpunkt auf, oder besteht das Problem genau darin, das festzustellen?

Ich kenne mich mit .Net Logging Mechanismen auch nicht aus, aber wenn du den Quelltext hast, kannst du doch zumindest selber irgendwelche Log-Meldungen herausschreiben (Ausgabe auf Console o.ä.).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich habe den Quelltext. Dieser wurde aber nicht komplett von mir geschrieben.

Und ich kenne mich auch nur mit Basics aus, ich habe ein paar Funktionen umgeschrieben. Das wars.

Jetzt ist (wie heute nacht wieder) zur gleichen Zeit das Programm auf zwei verschiedenen Servern gecrasht, was definitiv aufschlüsse auf einen fehler in einer SQL verarbeitung birgt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich habe den Quelltext. Dieser wurde aber nicht komplett von mir geschrieben.

Dies ist der Regelfall. Es ist häufig so, dass bestehender Code erweitert werden soll. Dies heißt, man muss erst mal viel Code lesen und sich in den Code reindenken. Das gehört zum Job.

Und ich kenne mich auch nur mit Basics aus, ich habe ein paar Funktionen umgeschrieben. Das wars.

Wenn das Programm vorher funktioniert hat, schau dir die Sachen an, die du geändert hast. Mann sollte keinen Code verändern, wenn man nicht versteht, was der bestehende Code macht.

Wenn dir hier Wissen fehlt, musst du es dir aneignen. Wenn du über Jahrzehnte in dem Job abeiten willst, ist dies eines der wichtigsten Fähigkeiten. Man muss ständig altes Wissen in neues Wissen transferieren.

Jetzt ist (wie heute nacht wieder) zur gleichen Zeit das Programm auf zwei verschiedenen Servern gecrasht, was definitiv aufschlüsse auf einen fehler in einer SQL verarbeitung birgt.

Das hört sich eher nach Raten an. Schaue dir die Veränderungen zur letzten funktionierenden Version an.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dies ist der Regelfall. Es ist häufig so, dass bestehender Code erweitert werden soll. Dies heißt, man muss erst mal viel Code lesen und sich in den Code reindenken. Das gehört zum Job.

Wenn das Programm vorher funktioniert hat, schau dir die Sachen an, die du geändert hast. Mann sollte keinen Code verändern, wenn man nicht versteht, was der bestehende Code macht.

Wenn dir hier Wissen fehlt, musst du es dir aneignen. Wenn du über Jahrzehnte in dem Job abeiten willst, ist dies eines der wichtigsten Fähigkeiten. Man muss ständig altes Wissen in neues Wissen transferieren.

Das hört sich eher nach Raten an. Schaue dir die Veränderungen zur letzten funktionierenden Version an.

Ja, das was ich geändert habe war von lokaler Datei in Datenbank.

Z.B ein IP Whitelist wurde vorher in whitelist.txt gepflegt, diese hab ich nun auf eine Datenbank ausgelagert, und das funktioniert auch, das Programm ist schon vorher durch diese exception gecrashed.

Ich denk das Problem liegt an den Auto-Messages die das tool verschickt.

Also schön das einem in nem Informatikforum nur solche Antworten gegeben werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Also schön das einem in nem Informatikforum nur solche Antworten gegeben werden.

mal ernsthaft: Was erwartest du? Du lieferst so gut wie nichts an Infos, weder Quelltext, noch genaue Angaben über deine Änderungen, noch was dein Programm tun soll, seit wann der Fehler auftritt etc. Im Grunde wissen wir nur: Ein Programm ist bei dir abgestürzt. Weder Programmiersprache, noch die Angabe, ob du selber etwas an dem Programm geändert hast, kamen von dir. Ok, das kann man natürlich verzeihen, da du ja offenbar Anfänger bist. Das ist kein Problem, zumindest sehe ich keinen Beitrag der dich deswegen verurteilt.

Dann kommen aber auch nach Nachfrage immer nur ganz spärliche Infos. Ok, kann man auch hinnehmen. Aber sowohl der Hinweis, dass man Code erstmal verstehen sollte bevor man ihn ändert und dass Logging und Debugging sehr wichtige Hilfsmittel sind, um überhaupt vernünftige programmieren zu können, scheinen dich nicht zufriedenzustellen.

Was genau ist denn eine Antwort, die deinen Erwartungen entspricht?

Ehrlich gesagt bin ich immer wieder überrascht, und das scheint hier echt zuzunehmen, dass die TE immer weniger liefern und immer mehr fordern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Programm wurde in C# geschrieben.

Geändert habe ich - wie schon erwähnt - lediglich, dass Dinge statt aus einer .txt aus der Datenbank gelesen werden - das funktioniert tadellos.

Meine Frage bzw vielmehr meine Bitte an die IT Community war nur ob mir jemand erklären kann, wie ich so ein logging schnell, effektiv und vorallem integer vornehmen kann.

Das Problem ist gefunden, trotzdem wäre so ein logging nicht schlecht.

Für alle die es interessiert: Verliert das Programm die Verbindung zum SQL Server stürzt es ab.

Habe jetzt bis das problem sauber gelöst worden ist eine batch geschrieben die wiefolgt aussieht (evtl. hilft das dem ein oder anderen, dann hat dieser thread einen weiteren Nennwert)


@echo off

set tool=deinProgramm.exe

title=%tool% Starter ...

echo ###########################

echo #			  # 

echo # %tool%   Starter #

echo #                         #

echo ###########################


:P1

echo.

echo ---------------------------------------

echo.

echo Success: Program "%tool%" started! ( %time% ) 

Start /W %tool%

echo.

echo Error: Program "%tool%" closed! ( %time% )

goto P1

Im CMD Fenster steht dann genau wann das Programm gestartet bzw beendet wurde.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum Logging:

Ich hatte dir oben nlog und log4net verlinkt. Einfach mal angucken, das ist wirklich nicht schwer. Aber ein wenig umständlich, das hier über's Forum zu erklären. Frag am besten mal deine Entwickler-Kollegen. Ich kann mir kaum vorstellen, dass ihr nicht in irgendeiner Form bereits Logging betreibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist gefunden, trotzdem wäre so ein logging nicht schlecht.

Für alle die es interessiert: Verliert das Programm die Verbindung zum SQL Server stürzt es ab.

du hast ein Problem gefunden. Tendenziell findest du sicherlich noch mehr Probleme. Denn

... ein IP Whitelist wurde vorher in whitelist.txt gepflegt, diese hab ich nun auf eine Datenbank ausgelagert, und das funktioniert auch, das Programm ist schon vorher durch diese exception gecrashed.

offensichtlich stecken immer noch ein paar Bugs in der Anwendung, was auch ok ist. Es braucht halt seine Zeit bis die gröbsten Fehler gefunden wurden. Logging ist hier ein Werkzeug um dies in den Griff zu kriegen.

Meine Frage bzw vielmehr meine Bitte an die IT Community war nur ob mir jemand erklären kann, wie ich so ein logging schnell, effektiv und vorallem integer vornehmen kann.

Von schnell würde ich erst mal abraten. Mach dich erst mal mit dem Thema vertraut. Bau dir erst mal eine kleine Testanwendung um die Komplexität rauszunehmen, wenn du dich dem Logging Thema zuwendest.

Wenn du dich für log4net entscheiden solltest, findest du via Google sicherlich genügend Beispiele, da viele Projekte dies verwenden. Das GitHub Projekt von denen beinhaltet auch ein paar Beispielanwendungen.

Offensichtlich soll deine Anwendung nicht bei jeder Exception aussteigen. Für Hintergrundprozesse bieten sich Services eher an. Da diese keine Konsole haben, wo sie Fehler ausgeben können, sind diese auf Logging Tools mehr oder weniger angewiesen. Aber auch Services werden sich beenden, sobald es eine Exception bis ganz nach oben geschafft hat.

Versuche für den Anfang erst mal nur Datenbankverbindung Auf- und Abbau mit zu loggen. Du packst das Ding in einen Try Catch Block, wobei du im Catch Block die Fehler mitloggst. In der MSDN kannst du sehen welche Exeptions von den Datenbank Klassen geworfen werden können (man muss es am Anfang nicht so granular machen). Logge dir auch den StackTrace mit, damit du sehen kannst wo der Ursprung des Fehlers ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...