ahstax
Goto Top

Vb.net: exe läuft auf manchen PCs, auf manchen nicht

Hallo,

ein von mir geschriebenes vb.net-Programm läuft und funktioniert. Auf allen Rechnern, die alle gleich sind und die hier so rumstehen. Funktioniert eigentlich.

Das Problem ist, dass das Programm auf einem Rechner, natürlich dem relevanten, zuerst problemlos lief und tat, was es tun sollte, und nun nur noch ein bisschen was tut, dann aber die Verarbeitung (Backgroundworker) unter- oder abbricht.

Kann man zu den potentiellen Gründen dieses Verhaltens irgendetwas sagen, ohne den Code zu kennen? Werden bsp Settings nicht sauber gespeichert? Kann man einen PC vollständig von allen Rückständen des Programm reinigen (ein Setup wurde nicht durchgeführt, lediglich Settings werden gespeichert)?

Die Herausforderung ist, dass an meinem Rechner, sowohl im Debug-Modus als aus die EXE problemlos funktionieren, ich das Problem also nicht so einfach nachbilden kann....

Ich bin dankbar für jeden Ansatz...

Neugierige Grüße,
Andreas

Content-Key: 267537

Url: https://administrator.de/contentid/267537

Printed on: April 26, 2024 at 09:04 o'clock

Member: colinardo
Solution colinardo Mar 26, 2015, updated at Apr 09, 2015 at 10:36:37 (UTC)
Goto Top
Hallo Andreas,
und tat, was es tun sollte, und nun nur noch ein bisschen was tut,
[OT]der Satz hat mir ein Schmunzeln auf die Lippen gezaubert. So oder so ähnlich lauten auch immer die Antworten meiner Kunden auf meine Fragen. You made my day.. face-big-smile [/OT]

Kann man zu den potentiellen Gründen dieses Verhaltens irgendetwas sagen, ohne den Code zu kennen?
Glaskugel polier ...
Wenn du mit den VB.NET Applications-Settings arbeitest um Einstellungen zu speichern (damit meine ich My.Settings), dann würde ich erst mal die Config-Dateien deiner Anwendung aus dem AppData-Verzeichnis deiner Anwendung löschen (C:\Users\%username%\AppData\Roaming\[deineApp]\xxx.config)

Für andere Sachen bau in deine Applikation Try...Catch Konstrukte ein, um jegliche Fehler deiner Anwendungen abzufangen. Nur so kommst du deinem Problem auf die Schliche.
Dann fallen mir noch unterschiedliche NET-Framework-Patchlevel und Versionen ein.

Ansonsten ist das hier ohne jeglichen Code... du weist schon was face-wink

Grüße Uwe
Member: joehuaba
Solution joehuaba Mar 27, 2015, updated at Apr 09, 2015 at 10:36:35 (UTC)
Goto Top
Guten Morgen face-smile

Was würde dagegensprechen deinen Quellcode zu veröffentlichen ?
Kannst ja deine "Daten" abändern face-smile
Weil ohne Quellcode zu sagen warum etwas nicht so funktioniert wie es soll, ist nicht gerade einfach ^^

Gruß joehuaba
Member: emeriks
Solution emeriks Mar 27, 2015, updated at Apr 09, 2015 at 10:36:34 (UTC)
Goto Top
Wie Colinardo schon schreibt:
Bau einen Schalter ein (Command Line Parameter oder Registry Value), mit welchem Du wahlweise einen Debugmodus aktivieren kannst. Dann lass das Programm bei aktiviertem Debugmodus alles loggen. "jetzt bin ich hier, jetzt mach ich das, huups - da kam ein fehler, jetzt bin ich hier .....". Das Lesen solcher u.U. sehr großen Logs ist dann u.U. mühselig, aber so kommst Du dann weiter.

E.
Member: ahstax
ahstax Mar 27, 2015 at 10:33:04 (UTC)
Goto Top
Hallo miteinander,

vielen Dank für Euer Input.
Mir ist schon klar, dass eigentlich der Code sinnvoll wäre. Aber dieses Machwerk möchte ich eigentlich niemandem zumuten... face-wink

Das Logging werde ich vermutlich so einbauen.

Interessant ist, dass ich die My.Settings-Datei xxx.config nicht finden kann. Weder unter dem angegebenen Pfad noch sonst irgendwo. Ich bin mir aber sicher, dass die Settings (im Prinzip) richtig gespeichert werden. Irgendwie ist das echt mirakulös...
Könnten die Settings noch irgendwo anders gespeichert sein?

Neugierige Grüße,
Andreas
Member: colinardo
Solution colinardo Mar 27, 2015, updated at Apr 09, 2015 at 10:36:33 (UTC)
Goto Top
Interessant ist, dass ich die My.Settings-Datei xxx.config nicht finden kann
Die muss nicht zwangsweise existieren, die gibt es nur wenn du dieses Feature auch nutzt face-wink Und das "xxx" ist natürlich nicht wörtlich zu nehmen.
Mehr dazu steht hier: Verwalten von Anwendungseinstellungen
Member: ahstax
ahstax Mar 27, 2015 at 10:51:40 (UTC)
Goto Top
Ich benutze dieses Feature, zumindest gehe ich davon aus. Ich lade My.Settings.xyz, ich speichere My.Settings.xyz... Aber keine "Andreas.exe.config" weit und breit... face-wink

Den Link schau ich mir gleich an.
Member: colinardo
Solution colinardo Mar 27, 2015, updated at Apr 09, 2015 at 10:36:32 (UTC)
Goto Top
Zitat von @ahstax:
"Andreas.exe.config" weit und breit... face-wink
die lautet dann eher user.config wenn es userspezifische Einstellungen die der User zur Laufzeit ändert.
Member: ahstax
ahstax Mar 27, 2015 at 11:38:37 (UTC)
Goto Top
Gefunden...
schwere Geburt...
Der Pfad lautet bei mir:
C:\Users\%username%\AppData\Local\Microsoft\BuffaloBill.exe_Url_bxxfojcaagtkuxnwyyxp24gtm3030xwc\1.0.0.0\user.config

Ich lösche die Datei jetzt mal an dem betreffenden Rechner und dann schau mer mal... Ich werde weiter berichten...! face-wink
Member: colinardo
Solution colinardo Mar 27, 2015, updated at Apr 09, 2015 at 10:36:30 (UTC)
Goto Top
BuffaloBill.exe
Ein neuer Moorhuhn-Klassiker face-big-smileface-big-smile ? Vielleicht hat der Rechner zu viele Kugeln ab bekommen ... oder er hat keine Munition mehr.
Member: ahstax
ahstax Mar 27, 2015 at 11:43:09 (UTC)
Goto Top
Nein... face-wink

Das Tool überwacht ein E-Mail-Postfach, fängt neu eingegangene E-Mails ab, macht aus der E-Mail und deren Anlagen, soweit möglich, eine einzige PDF-Datei und druckt diese dann aus.
Und BuffaloBill fiel mir im Zusammenhang mit Post eben ein... face-wink
Member: ahstax
ahstax Mar 27, 2015 at 11:54:35 (UTC)
Goto Top
Das Löschen der user.config-Datei brachte leider nichts... face-sad
Member: colinardo
Solution colinardo Mar 27, 2015, updated at Apr 09, 2015 at 10:36:29 (UTC)
Goto Top
Du sprachst von Mailkontoüberwachung... meinst du damit das du ein Outlook-Konto überwachst bzw. Outlook über die COM-Schnittstelle ansprichst ?
Member: ahstax
ahstax Mar 27, 2015 updated at 14:31:06 (UTC)
Goto Top
Die COM-Schnittstelle spreche ich an (zumindest nach meinem Verständnis).
Das Wahrnehmen und Zwischenspeichern der Mails klappt auch einwandfrei. Die Mails bzw die erstellten PDF-Dateien werden nicht mehr gedruckt, was bis kurz vorher noch funktionierte und an anderen PCs auch immer noch funktioniert.
Das Tool (VeryPDF PDFPrint Commandline KLICK, das CommandLine-Tool, FYI), mit dem ich Drucke, kann es nicht sein. Der Ausdruck einer entsprechenden Fehlerinfo funktioniert noch.
Member: colinardo
Solution colinardo Mar 27, 2015, updated at Apr 09, 2015 at 10:36:28 (UTC)
Goto Top
Die Mails bzw die erstellten PDF-Dateien werden nicht mehr gedruckt, was bis kurz vorher noch funktionierte und an anderen PCs auch immer noch funktioniert.
Dann kannst du es ja auf einen Codebereich eingrenzen. Debugge dort penibelst, dann wirst du den Fehler schon finden. Das ist jetzt so speziell das man ohne Code face-confused. ....
So gibt meine Glaskugel im Moment leider nicht mehr her, und für Rumraterei habe ich im Moment dann doch leider keine Zeit übrig.
Aber dieses Machwerk möchte ich eigentlich niemandem zumuten
Dann findest du da sicher noch den Fehler, wenn es hier nicht vorzeigbar ist face-wink. Hier reißt dir aber keiner den Kopf ab wenn du Code postest, und wenn doch wird der von mir persönlich skalpiert, Programmierer müssen zusammenhalten face-wink

Gruß Uwe
Member: Lochkartenstanzer
Solution Lochkartenstanzer Mar 28, 2015, updated at Apr 09, 2015 at 10:36:27 (UTC)
Goto Top
Zitat von @ahstax:

Ich bin dankbar für jeden Ansatz...


meine Kristallkugel sagt in solchen Fällen:

  • Degubebr anwerfen,
  • Breakpoints auf verdächtigen Bereich Setzen
  • Verdächtigen Bereich Schritt für schritt druchtracen.

Habe ich schon seit ein paar Jahren nicht mehr gemacht, soltle aber heutzutage auch noch funktioneren.

lks
Member: ahstax
ahstax Mar 31, 2015 at 08:53:04 (UTC)
Goto Top
Hallo,

wie gesagt, auf meinem PC läuft der Code sowohl im Debugger als auch als Release (in diesem Fall passt wohl "leider").

Ich gehe das Problem so wie von Euch vorgeschlagen an. Ich setze Try...Catch-Blöcke, soweit die noch nicht enthalten sind.
Wie sinnvoll ist es denn, in einem Sub odgl. einen Try...Catch-Block zu verwenden, in dem ein anderes Sub aufgerufen wird, in dem wiederum ein Try...Catch-Block enthalten ist. Führt das zu einen sinnvollen Ergebnis?
Public Sub SteuerungsSub()
 Try
  ...
  AngesteuertesSub()
  ...
 Catch ex1 As System.Exception
  MsgBox(ex1.Message)
 End Try
End Sub

Private Sub AngesteuertesSub()
 Try
  ...
  Irgendwelcher_Code
  ...
 Catch ex2 As System.Exception
  MsgBox(ex2.Message)
 End Try
End Sub

Grüße,
Andreas
Member: Lochkartenstanzer
Solution Lochkartenstanzer Mar 31, 2015, updated at Apr 09, 2015 at 10:36:25 (UTC)
Goto Top
Zitat von @ahstax:

wie gesagt, auf meinem PC läuft der Code sowohl im Debugger als auch als Release (in diesem Fall passt wohl
"leider").

du solst den debugge rja auch nciht dort anwerfen wo alles sauber äuft, sondern da, wo es knirscht.

lks
Member: ahstax
ahstax Mar 31, 2015 at 09:07:46 (UTC)
Goto Top
Hallo,

dann habe ich Dich missverstanden. Und weiß ehrlich gesagt nicht, was Du meinst...
Member: Lochkartenstanzer
Solution Lochkartenstanzer Mar 31, 2015, updated at Apr 09, 2015 at 10:36:24 (UTC)
Goto Top
Zitat von @ahstax:

Hallo,

dann habe ich Dich missverstanden. Und weiß ehrlich gesagt nicht, was Du meinst...

Auf der Kiste wo es das Problem gibt, den Debugger installieren und dann tracen. Es bringt ncihts das bei Dir zu tracen, weil es bei Dir ja läuft.

Ist so wie mit dem Auto: Wenn Du der Werstatt sagst, daß Auto macht bei Tempo 280 komische Geräusche, die aber nur auf der Landstraße testet, werden die den Fehler nie finden.

lks
Member: ahstax
ahstax Mar 31, 2015 at 09:27:12 (UTC)
Goto Top
Ay! Verstanden. Um mich jetzt aber vollends zu blamieren:
Mit Debugger meinst Du beispielsweise "MS Visual Studio YYYY Express", vermutlich vorzugsweise die gleiche Version, die ich auf meinem PC verwende?
Member: colinardo
Solution colinardo Mar 31, 2015, updated at Apr 09, 2015 at 10:36:23 (UTC)
Goto Top
Hallo Andreas,
du kannst auch alle Variablen etc. testweise in eine Datei schreiben lassen (logging) dann siehst du genau an welcher Stelle der jeweilige PC aussteigt. Je detaillierter du das machst desto größer ist die Chance das du den krummen Zwerg findest.

Grüße Uwe
Member: colinardo
Solution colinardo Mar 31, 2015, updated at Apr 09, 2015 at 10:36:21 (UTC)
Goto Top
Und natürlich nicht zu vergessen zu erwähnen der Remote-Debugger in Visual Studio.
Verfügbar in der kostenlosen Visual Studio Community 2013 Edition (Entspricht einer Professional Ausgabe)
Member: ahstax
ahstax Apr 09, 2015 at 10:36:17 (UTC)
Goto Top
Hallo miteinander,

ich habe Eurem Rat entsprechend in meinen Code eine zuschaltbare und umfangreiche Debug-Funktion eingebaut. Und siehe da... Da isser, der fiese, kleine Fehler.
Vielen Dank auf jeden Fall für Eure Mühe und Anregungen, trotz meiner "ungewöhnlichen" Frage ohne Code...

Der Vollständigkeit halber noch die Erklärung, was das Problem war:
Mein Programm erlaubt ja Benutzereinstellungen, die über Checkboxen und Textfelder vorgenommen werden. Ich hatte nun an einem PC in ein Textfeld keinen Wert eingegeben (und auch keinen Defaultwert hinterlegt), diesen Wert aber (völlig unnötig) später im Code abgefragt. Da hat der PC dann aufgegeben. So sind sie ebene...

In diesem Sinne (Sonne macht albern...!)
Grüße,
Andreas
Member: colinardo
colinardo Apr 09, 2015 updated at 10:44:21 (UTC)
Goto Top
Danke für deine Rückmeldung face-big-smile . Wir teilen ein Leid, gestern ebenfalls 2 Stunden an so einem banalen Problem gehangen... Dann kurz zur Mittagspause und plötzlich machts Klick face-smile ... Manchmal hat man echt ein Brett vorm Kopf.

Grüße Uwe