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:
-
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
.
-
Nach der Installation von WinDbg: WinDbg starten. In der Taskleiste:
"Start"..."Alle Programme"..."Debugging Tools for Windows"..."WinDbg".
-
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".
-
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.
-
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).
-
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).
-
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.