Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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

Geschrieben

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.

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...