DEBUGGING

Falls beim Betrieb des CAN-Interfaces (o.ä.) Programmabstürze auftreten, kann ein externer Debugger verwendet werden, um die problematische Stelle zu finden. Speziell im Zusammenhang mit den verschiedenen CAN-Treibern, Windows-Versionen, Service-Packs, gibt es eine Vielzahl von Kombinationen die von uns (d.h. MKT Systemtechnik) nicht alle getestet werden können.

Durch den Einsatz eines externen Debuggers können Sie uns helfen, die Fehlerursache zu finden und zu beheben.

Die folgenden Schritte waren z.B. im Mai 2007 erforderlich, um einen rätselhaften Absturz des CAN-Terminal-Programmiertools im Zusammenhang mit einem gewissen CAN-Interface aufzudecken:

  1. Einen geeigneten Debugger auf  dem System (PC) installieren, auf dem der Absturz auftritt. Wir verwenden WinDbg, andere Debugger sind allerdings auch geeignet. Details und Download gibt's (oder zumindest gab es) kostenlos bei Microsoft: http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx .
  2. Nach der Installation von WinDbg: WinDbg starten. In der Taskleiste: "Start"..."Alle Programme"..."Debugging Tools for Windows"..."WinDbg".
  3. Nach dem Start von WinDbg: Das "abstürzende" Programm laden und starten (hier z.B. das Programmiertool für MKT-View und andere "CANdb-Terminals"). Im Hauptmenü von WinDbg : "File"..."Open Executable"...<den Pfad zur ausführbaren Datei finden>..."ctptwin1.exe"..."OK".
  4. WinDbg lädt nun die ausführbare Datei, und mault "Symbol file could not be found". Dies liegt daran, dass das Programm nicht mit Visual XYZ sondern mit einem Borland-Compiler übersetzt wurde; der Fehler muss ignoriert werden.
  5. Im WinDbg-Hauptmenü "Debug"..."Go" anwählen um das geladene Programm zu starten. In der Statuszeile (unten) steht nun hoffentlich "Debuggee is running" (d.h. das zu debuggende Programm läuft).
  6. Im MKT-Programm das Panel zur Auswahl des CAN-Interfaces(!) öffnen, und dort die Option "activate Debugging" bzw "Debugging aktivieren" einschalten. Danach meldet das MKT-Programm alle "wichtigen und potentiell absturzgefährdeten" Aktionen an den Debugger, bevor es diese ausführt (z.B. Laden einer CAN-Treiber-DLL, Initialisieren des CAN-Treibers, und so weiter).
  7. Das MKT-Programm wie gewohnt laufen lassen. Wenn's crasht, in den Debugger umschalten. Dort stehen (bei WinDbg im "Command"-Window) nun die letzten Lebenszeichen, z.B.:
    ModLoad: 77bb0000 77bc5000 C:\WINDOWS\system32\MSACM32.dll
    ModLoad: 77ba0000 77ba7000 C:\WINDOWS\system32\midimap.dll
    UCAN_Init(intf=8)
    xlLoadLibrary: trying to load library...
    xlLoadLibrary: first attempt failed, trying c:\XL Driver Library now...
    ModLoad: 10000000 10037000 c:\XL Driver Library\bin\vxlapi.dll
    xlLoadLibrary: returning, success .
    xlLoadLibrary: calling xlDllOpenDriver..
    ModLoad: 778f0000 779e4000 C:\WINDOWS\system32\SetupApi.dll
    xlLoadLibrary returned, stat="XL_SUCCESS" .


    Kopieren Sie den Inhalt dieses Fensters in die Zwischenablage, und fügen Sie ihn als *TEXT* in eine Email an MKT Systemtechnik ein. Sie können uns dadurch sehr bei der Fehlerbehebung helfen; speziell dann, wenn der Fehler nur auf "Ihrem" PC auftritt.

Stand:  2007-05-29

Autor: W.B.