DLL-Aufruf protokollieren?

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Yusago.

    DLL-Aufruf protokollieren?

    Hi Zusammen,
    ich würde gerne wissen ob es eine Möglichkeit gibt, eine Art Logeintrag beim Laden der DLLs zu schreiben. Es könnte schon etwas ganz simples sein, es dient nur zu Debug-Zwecken. Messageboxen mit 1, 2, 3, 4, 5 usw. weiß jemand was?

    Mit freundlichen Grüßen,
    Yusago
    Wenn Du die Quellen der DLL hast, schreib das dort rein, ansonsten wird es unübersichtlich oder Du baust Dir eine DLL-Wrapper-Klasse, wo Du das reinschreibst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Aufruf der DLLs geschieht ja beim Programmstart, oder sehe ich das falsch? Wo also soll ich da meine MSGBox/Debugline einfügen? Ich kann ja schlecht unter jedem "Imports" sowas einfügen. Es geht übrigens darum, dass das Programm auf einem Server getestet werden soll, auf dem kein VS installiert ist, also sollten es MsgBoxen etc. sein, aber mir würde es schon genügen, wenn mir jemand sagen könnte, ob der DLL-Aufruf irgendwie als Event existiert, bei dem dann bspw. eine MsgBox ausgegeben werden kann. Ich kann mit "DLL-Wrapperklasse" jetzt spontan nichts anfangen, werde es mal googlen. Verzeiht mir, falls ich grade etwas auf dem Schlauch stehe - Montag :S

    Yusago schrieb:

    Ich kann ja schlecht unter jedem "Imports" sowas einfügen.
    :D
    Bevor Du total ohne Plan dastehst, beschreib mal, was Du eigentlich erreichen willst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie gesagt, ich muss das ganze auf einem Server zum laufen bringen, was jedoch nicht funktioniert (auf dem Entwicklungsrechner geht es jedoch). Um herauszufinden, womit das Programm ein Problem hat, will ich praktisch Debuggen - allerdings ist auf dem Server kein VS installiert, also muss ich das entweder per MessageBox oder Logeintrag (Klasse hierzu ist schon vorhanden) machen.
    Schreib Dein Protokoll in eine Datei, Parameter Append = True.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hab ich getan, aber es kommt ja nie dazu, dass das Programm überhaupt irgendein Log abwirft. Es stürzt sofort nach dem Start ab (es zeigt sich noch der eingebaute SplashScreen). Im Prinzip dasselbe wie hier:

    [VB 2008] WindowsApplication funktioniert nicht mehr?!?

    Mein Programm funktioniert auf diesem Rechner (Win 7 64 bit) sehr gut, und ohne Probleme. Will ich es jedoch auf Windows Server 2008 starten, erscheint zwar zunächst der SplashScreen, doch bevor die Form geladen wurde, stürzt das Programm ab ("[Programmname] funktioniert nicht mehr, es wird nach einer Lösung gesucht). Ich wollte nun wissen, wie ich am Besten herausfinde, woran das liegt (meine Überlegung war, ob man nicht das Laden der DLLs irgendwie in Logs schreiben könnte, zu dem Zeitpunkt wenn sie geladen werden - auch wenn das vermutlich nicht geht).

    Schon versucht habe ich:
    Spoiler anzeigen
    - Ziel-CPU x64, x86, Any CPU - Brachte alles keinen Erfolg.
    - Plattform abzuändern auf x86, Any CPU, usw. - Auch kein Erfolg.


    Fehlermeldung:
    Spoiler anzeigen

    Beschreibung:
    Stopped working

    Problemsignatur:

    Problemereignisname: CLR20r3
    Problemsignatur 01: [Programmname].exe
    Problemsignatur 02: 1.0.0.0
    Problemsignatur 03: 4fb114fd
    Problemsignatur 04: [Programmname]
    Problemsignatur 05: 1.0.0.0
    Problemsignatur 06: 4fb114fd
    Problemsignatur 07: 12
    Problemsignatur 08: c6
    Problemsignatur 09: System.InvalidOperationException
    Betriebsystemversion: 6.1.7600.2.0.0.272.7
    Gebietsschema-ID: 1031

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Yusago“ ()

    Yusago schrieb:

    Es stürzt sofort nach dem Start ab (es zeigt sich noch der eingebaute SplashScreen)

    Na dann hat er doch alle Abhängikeiten auflösen können. Denn die werden ja (afaik) beim Start geprüft und nicht, wenn das erste mal eine Funktion aus dieser DLL aufgerufen wird.
    Hast du denn die Debug-Version auf dem Server installiert? Normalerweise sollte der JIT Compiler doch eine aussagefähige Fehlermeldung werfen.

    picoflop schrieb:

    Yusago schrieb:

    Es stürzt sofort nach dem Start ab (es zeigt sich noch der eingebaute SplashScreen)

    Na dann hat er doch alle Abhängikeiten auflösen können. Denn die werden ja (afaik) beim Start geprüft und nicht, wenn das erste mal eine Funktion aus dieser DLL aufgerufen wird.
    Hast du denn die Debug-Version auf dem Server installiert? Normalerweise sollte der JIT Compiler doch eine aussagefähige Fehlermeldung werfen.


    Klingt logisch. Hatte die Version via Setup installiert, allerdings auf Verdacht auch mal direkt die aus dem Release Ordner, beides ohne Erfolg. Fehlermeldung gibts wie in meinem letzten Post im Spoiler beschrieben, Visual Studio kann ich da aktuell nicht so ohne weiteres drauf installieren.

    Yusago schrieb:

    allerdings auf Verdacht auch mal direkt die aus dem Release Ordner,

    Schmeiss halt mal die Version aus dem Debug-Ordner auf den Server und schau, was er dann sagt. Außerdem kannst du noch das UnhandledException Event registrieren und entweder was ausgeben oder halt selbst zb den Stacktrace irgendwo hinschreiben.
    Ist auf dem Server das richtige FrameWork installiert?
    Mach Dir ein "Hallo World"-Testprogramm ohne alle Funktionalität und Schnick-Schnack.
    Lass dies auf dem Server laufen.
    Wenn es läuft, übernimm von Deinem Programm einzelne Verweise, mach einen Zugriff darauf.
    Wenn es dann nicht mehr läuft, hast Du den Übeltäter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    picoflop schrieb:

    Yusago schrieb:

    allerdings auf Verdacht auch mal direkt die aus dem Release Ordner,

    Schmeiss halt mal die Version aus dem Debug-Ordner auf den Server und schau, was er dann sagt. Außerdem kannst du noch das UnhandledException Event registrieren und entweder was ausgeben oder halt selbst zb den Stacktrace irgendwo hinschreiben.


    Kommt genau dieselbe Meldung. Die Exception registrieren - was meinst du damit, und wie stelle ich das an? Ich bin kein Experte hierbei, also bitte ich um etwas Umsicht.

    @Rod: Gute Idee, teste es gleich mal: Normales "Hallo Welt" ohne Verweise geht problemlos, ich füg sie jetzt nacheinander mal an.