erste fassung einer .dbg library für lisp Programme erzeugt
This commit is contained in:
@@ -4,17 +4,6 @@
|
||||
;; durch echte Funktionalitaet ersetzt werden.
|
||||
;; ============================================================
|
||||
|
||||
;; --- ILS / Kreisel-Module ---
|
||||
(defun c:ILS_Kreisel ()
|
||||
(princ "\n[DUMMY] ILS_Kreisel aufgerufen")
|
||||
(princ)
|
||||
)
|
||||
|
||||
(defun c:ILS_Eckrad ()
|
||||
(princ "\n[DUMMY] ILS_Eckrad aufgerufen")
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; --- ILS / Zusatzmodul ---
|
||||
(defun c:ILS_BTMT_Beladung ()
|
||||
(princ "\n[DUMMY] ILS_BTMT_Beladung aufgerufen")
|
||||
|
||||
@@ -0,0 +1,237 @@
|
||||
;; ============================================================
|
||||
;; SSG_DBG.LSP - Debug-Routinensammlung
|
||||
;;
|
||||
;; Funktionen:
|
||||
;; (dbgopen "dateiname.dbg") - Oeffnet Debug-Datei
|
||||
;; (dbgclose) - Schliesst Debug-Datei
|
||||
;; (dbgon) - Aktiviert Debug-Ausgabe
|
||||
;; (dbgoff) - Deaktiviert Debug-Ausgabe
|
||||
;; (dbgf "funktionsname") - Schreibt Funktionseintritt mit {
|
||||
;; (dbgreturn wert) - Schreibt Funktionsaustritt mit } = wert
|
||||
;; (dbg wert) - Schreibt Variable mit aktuellem Wert
|
||||
;; (dbgp "text") - Debug-Print (Alias fuer dbgmsg)
|
||||
;; (dbgmsg "text") - Freitext-Nachricht loggen
|
||||
;;
|
||||
;; dbgon/dbgoff steuert, ob Ausgaben geschrieben werden.
|
||||
;; Damit kann man gezielt nur bestimmte Abschnitte debuggen.
|
||||
;; Ein (dbgoff) VOR (dbgopen) verhindert das Anlegen der Datei.
|
||||
;;
|
||||
;; Beispiel:
|
||||
;; (dbgopen "test.dbg")
|
||||
;; (dbgoff) ; ab hier keine Ausgabe
|
||||
;; (dbgf "unwichtig") ; wird NICHT geschrieben
|
||||
;; (dbgreturn 0)
|
||||
;; (dbgon) ; ab hier wieder Ausgabe
|
||||
;; (dbgf "meine-funktion")
|
||||
;; (dbg 'x)
|
||||
;; (dbgreturn ergebnis)
|
||||
;; (dbgclose)
|
||||
;;
|
||||
;; Erzeugt z.B.:
|
||||
;; meine-funktion(){
|
||||
;; x=42
|
||||
;; } = 99
|
||||
;; ============================================================
|
||||
|
||||
;; Globale Variablen
|
||||
(setq *dbg-file* nil) ; Datei-Handle
|
||||
(setq *dbg-indent* 0) ; Aktuelle Einruecktiefe
|
||||
(setq *dbg-active* T) ; Debug-Ausgabe aktiv (Standard: ein)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGON - Debug-Ausgabe aktivieren
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgon ()
|
||||
(setq *dbg-active* T)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGOFF - Debug-Ausgabe deaktivieren
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgoff ()
|
||||
(setq *dbg-active* nil)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGOPEN - Debug-Datei oeffnen
|
||||
;; Wenn *dbg-active* nil ist, wird keine Datei angelegt.
|
||||
;; Parameter:
|
||||
;; filename - Dateiname (z.B. "test.dbg")
|
||||
;; envvar - Optional: Name einer Umgebungsvariable fuer das
|
||||
;; Zielverzeichnis (z.B. "DXFM_LOG").
|
||||
;; Wenn nil oder nicht gesetzt, wird "." verwendet.
|
||||
;; Aufruf:
|
||||
;; (dbgopen "test.dbg" "DXFM_LOG") -> C:\...\log\test.dbg
|
||||
;; (dbgopen "test.dbg" nil) -> .\test.dbg
|
||||
;; (dbgopen "test.dbg") -> .\test.dbg
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgopen (filename envvar / dir fullpath ts)
|
||||
(if (not *dbg-active*)
|
||||
(progn
|
||||
(prompt "\n[DBG] Debug deaktiviert - keine Datei angelegt.")
|
||||
(princ)
|
||||
)
|
||||
(progn
|
||||
;; Verzeichnis bestimmen
|
||||
(setq dir nil)
|
||||
(if (and envvar (/= envvar ""))
|
||||
(progn
|
||||
(setq dir (getenv envvar))
|
||||
(prompt (strcat "\n[DBG] getenv " envvar " = " (if dir dir "nil")))
|
||||
)
|
||||
)
|
||||
(if (or (not dir) (= dir ""))
|
||||
(setq dir ".")
|
||||
)
|
||||
;; Pfad zusammenbauen (Backslash am Ende sicherstellen)
|
||||
(if (and (/= (substr dir (strlen dir) 1) "\\")
|
||||
(/= (substr dir (strlen dir) 1) "/"))
|
||||
(setq dir (strcat dir "\\"))
|
||||
)
|
||||
(setq fullpath (strcat dir filename))
|
||||
(prompt (strcat "\n[DBG] Oeffne: " fullpath))
|
||||
(if *dbg-file* (close *dbg-file*))
|
||||
(setq *dbg-file* (open fullpath "w"))
|
||||
(setq *dbg-indent* 0)
|
||||
(if *dbg-file*
|
||||
(progn
|
||||
;; Timestamp sicher erzeugen (menucmd kann nil liefern)
|
||||
(setq ts (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM:SS)"))
|
||||
(if (not ts) (setq ts "(kein Zeitstempel)"))
|
||||
(write-line (strcat "=== DEBUG START " ts " ===") *dbg-file*)
|
||||
(prompt (strcat "\n[DBG] Debug-Datei geoeffnet: " fullpath))
|
||||
)
|
||||
(prompt (strcat "\n[DBG] FEHLER: Konnte Debug-Datei nicht oeffnen: " fullpath))
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGCLOSE - Debug-Datei schliessen
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgclose ( / ts)
|
||||
(if *dbg-file*
|
||||
(progn
|
||||
(setq ts (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM:SS)"))
|
||||
(if (not ts) (setq ts "(kein Zeitstempel)"))
|
||||
(write-line (strcat "=== DEBUG ENDE " ts " ===") *dbg-file*)
|
||||
(close *dbg-file*)
|
||||
(setq *dbg-file* nil)
|
||||
(setq *dbg-indent* 0)
|
||||
(prompt "\n[DBG] Debug-Datei geschlossen.")
|
||||
)
|
||||
(prompt "\n[DBG] Keine Debug-Datei geoeffnet.")
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG-TABS - Hilfsfunktion: Erzeugt Einrueckung
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg-tabs (/ result i)
|
||||
(setq result "" i 0)
|
||||
(repeat *dbg-indent*
|
||||
(setq result (strcat result "\t"))
|
||||
)
|
||||
result
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG-TOSTRING - Hilfsfunktion: Wert in String umwandeln
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg-tostring (val)
|
||||
(cond
|
||||
((= val nil) "nil")
|
||||
((= (type val) 'STR) (strcat "\"" val "\""))
|
||||
((= (type val) 'INT) (itoa val))
|
||||
((= (type val) 'REAL) (rtos val 2 6))
|
||||
((= (type val) 'LIST)
|
||||
(strcat "(" (dbg-list-tostring val) ")")
|
||||
)
|
||||
((= (type val) 'ENAME) (strcat "<Entity: " (vl-princ-to-string val) ">"))
|
||||
(T (vl-princ-to-string val))
|
||||
)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG-LIST-TOSTRING - Hilfsfunktion: Liste in String
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg-list-tostring (lst / result first)
|
||||
(setq result "" first T)
|
||||
(foreach item lst
|
||||
(if first
|
||||
(setq first nil)
|
||||
(setq result (strcat result " "))
|
||||
)
|
||||
(setq result (strcat result (dbg-tostring item)))
|
||||
)
|
||||
result
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGF - Funktionseintritt loggen
|
||||
;; Schreibt "funktionsname(){" und erhoeht Einrueckung
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgf (funcname)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(progn
|
||||
(write-line (strcat (dbg-tabs) funcname "(){") *dbg-file*)
|
||||
(setq *dbg-indent* (1+ *dbg-indent*))
|
||||
)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGRETURN - Funktionsaustritt loggen
|
||||
;; Verringert Einrueckung und schreibt "} = wert"
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgreturn (retval)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(progn
|
||||
(setq *dbg-indent* (max 0 (1- *dbg-indent*)))
|
||||
(write-line (strcat (dbg-tabs) "} = " (dbg-tostring retval)) *dbg-file*)
|
||||
)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG - Variable/Wert loggen
|
||||
;; Schreibt "<tabs> name='wert'"
|
||||
;; Aufruf: (dbg 'varname) oder (dbg wert)
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg (varname / val)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(if (= (type varname) 'SYM)
|
||||
(progn
|
||||
(setq val (eval varname))
|
||||
(write-line (strcat (dbg-tabs) (vl-symbol-name varname) "=" (dbg-tostring val)) *dbg-file*)
|
||||
)
|
||||
(write-line (strcat (dbg-tabs) "value=" (dbg-tostring varname)) *dbg-file*)
|
||||
)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGMSG - Freitext-Nachricht loggen
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgmsg (msg)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(write-line (strcat (dbg-tabs) ">> " msg) *dbg-file*)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGP - Alias fuer DBGMSG (debug print)
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgp (msg) (dbgmsg msg))
|
||||
|
||||
(prompt "\nssg_dbg geladen.")
|
||||
(princ)
|
||||
Reference in New Issue
Block a user