Ramses_PyramidenVerleih Geschrieben 15. März 2006 Teilen Geschrieben 15. März 2006 Hallo Leute, habe ein Problem mit der Debug-Ausgabe unter Visual Basic 6. Ich habe hier dieverse Projekte, in welchen ich zu Debugging-Zwecken mit Debug.Print arbeite, damit man diverse Ausgaben in das Direktfenster bekommt, und nicht immer durch die Anwendung mühevoll durchsteppen muss, um Fehler zu finden. Nun hatte ich mit einem Projekt Probleme beim Kunden. Dort wäre es schön gewesen, wenn man auf diese Debug-Meldung hätte zugreifen können, um das Problem bei der Software einzugrenzen. Leider war auf dem Kundensystem keine Entwicklungsumgebung installiert - wie meistens! Heute habe ich bei sysinternals.com ein Tool gefunden, welche mir in eben dieser Situation weitergeholfen hätte: DebugView Under Windows NT, 2000, XP and Server 2003 DebugView will capture: Win32 OutputDebugString Kernel-mode DbgPrint All kernel-mode variants of DbgPrint implemented in Windows XP and Server 2003 Habe den mal hier bei mir lokal ausprobiert und musste jetzt leider feststellen, das Debug.Print im Quellcode nicht in dem DebugView angezeigt wird. Nun die Frage: Wie kriege ich die Debugmeldungen unter VB so eingebaut, dass die sowohl im Direktfenster als auch im DebugView angezeigt werden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 15. März 2006 Teilen Geschrieben 15. März 2006 ich bin mir nicht sicher, aber mit VB6.exe's gibt nur debugausgaben, wenn in den projekteigenschaften "Compile to Native Code" und "Create Symbolic Debug Info" angehakt ist. es sollten dann auch ein PDB- und ein MAP-file erzeugt werden. aaaaaber: du müsstest zusätzlich in deiner anwendung das von DebugView geforderte OutputDebugString auch ausführen. ohne gehts nicht. also versuch mal in einer testanwendung folgende APIs aufzunehmen und auch abzurufen: Declare Sub OutputDebugString Lib "kernel32" Alias "OutputDebugStringA" (ByVal lpOutputString As String) Declare Function IsDebuggerPresent Lib "kernel32" () As Long das abrufen ist dann mit DebugView, WinDbg oder aber auch DBWin32 möglich. alternativ implemntiere deine eigene debug-funktion, die zusätzlich in ein logfile schreibt. Public Sub DebugLog(ByVal Text As String) Debug.Print Text #If Debugging Then OutputDebugString Text & vbCrLf Dim FileNum As Integer FileNum = FreeFile Open "C:\" & App.Name & "-" & CStr(App.ThreadID) & ".log" For Append As #FileNum Print #FileNum, Text Close #FileNum #End If End Sub s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whatever Geschrieben 15. März 2006 Teilen Geschrieben 15. März 2006 Oder implementier einen Schalter als Kommandozeilenoption (z.b. supiProg --debug) und erzeugst, wenn dieser gesetzt ist, ein zusaetzliches Form indem du eine die Messages ausgibst (evtl kannst du spaeter ja nocht Funktionen wie Print, Save As File, eMail-To-Developer, etc. einbauen). Das ganze koennte man dann in jedem Programm wiederverwenden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ramses_PyramidenVerleih Geschrieben 15. März 2006 Autor Teilen Geschrieben 15. März 2006 Danke für die Tips... Der Tip von Amstelchen hilft mir sehr weiter! Und der Vorschlag von Whatever ist wirklich ne überlegung wert! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CSC Geschrieben 20. März 2006 Teilen Geschrieben 20. März 2006 Ich würde noch einen dritten Vorschlag machen: Gibt die Meldungen in einer Textdatei aus. Ich habe bei meinen meisten VB-Projekten eine Funktion eingebaut, welche mir die gewünschten Informationen im Debug-Fenster und auch gleichzeitig in eine Log-Datei schreibt. Statt Debug.Print rufe ich eben diese Funktion auf. Ich bin damit immer gut gefahren und der Aufwand ist auch im Rahmen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.