Debug-Logging fuer VF-Linienzug Modus 1 und Modus 3
Zentrale Debug-Schalter-Sammlung (*dbg-schalter*, Default AUS) in ssg_dbg.lsp: dbg-schalter-on/-off/-p/-open/-liste. dbg*-Aufrufe bleiben dauerhaft im Code, ohne im Normalbetrieb .dbg-Dateien zu erzeugen. Modus 1 (vf-linienzug-modus): Session-Logging ueber Schalter "vfl-modus1" nach DXFM_LOG/vfl_modus1.dbg. Da alle interaktiven Eingaben bereits ueber die gemeinsamen vfl-in-point/-string/-real/ -int/-value/-selection-Wrapper laufen, reicht eine einzige Instrumentierung in vfl-journal-record/-mark/-steplabel, um jede Frage/Antwort automatisch mitzuloggen. Modus 3 (vf-linienzug-modus3): auf dieselben vfl-in-*-Wrapper umgestellt (vorher rohe getstring/getreal/getint/ssget) - profitiert dadurch vom selben automatischen Logging (Schalter "vfl-modus3", DXFM_LOG/vfl_modus3.dbg). Kein Journal-Replay/XDATA wie bei Modus 1/2, nur das Logging wurde uebernommen. Fix nebenbei: Dialog-Kopfzeile "Hoehe (Z) des Endpunkts [%1]" zeigte den Platzhalter woertlich statt des Vorschlagswerts (ssg-text statt ssg-textf). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -192,6 +192,55 @@ Beispiel:
|
||||
(dbgclose)
|
||||
```
|
||||
|
||||
#### Zentrale Debug-Schalter (default AUS)
|
||||
|
||||
Damit `dbg*`-Aufrufe dauerhaft im Code stehen bleiben können, ohne im
|
||||
Normalbetrieb `.dbg`-Dateien zu erzeugen, gibt es eine zentrale Schalter-Sammlung
|
||||
(`*dbg-schalter*`, Symbol → 0/1, alle standardmäßig 0/aus). Eine Routine öffnet
|
||||
ihre Debug-Datei nur, wenn ihr Schalter eingeschaltet ist.
|
||||
|
||||
| Funktion | Beschreibung |
|
||||
| --- | --- |
|
||||
| `dbg-schalter-on name` | Schalter `name` einschalten (1) |
|
||||
| `dbg-schalter-off name` | Schalter `name` ausschalten (0) |
|
||||
| `dbg-schalter-p name` | `T` wenn eingeschaltet, sonst `nil` |
|
||||
| `dbg-schalter-open name filename envvar` | Öffnet die Datei **nur** wenn Schalter=1; gibt `T`/`nil` zurück |
|
||||
| `dbg-schalter-liste` | Alle bekannten Schalter + Zustand ausgeben |
|
||||
|
||||
Bekannte Schalter:
|
||||
|
||||
| Schalter | Modul | Loggt nach |
|
||||
| --- | --- | --- |
|
||||
| `"vfl-modus1"` | Linienzug Modus 1 (manuelle Eingabe, `vf-linienzug-modus`) | `DXFM_LOG/vfl_modus1.dbg` |
|
||||
| `"vfl-modus3"` | Linienzug Modus 3 (Vorwärts-Nachbau, `vf-linienzug-modus3`) | `DXFM_LOG/vfl_modus3.dbg` |
|
||||
|
||||
Modus 1 (und baugleich Modus 2) loggen automatisch **jede** interaktive Eingabe,
|
||||
weil beide ausschließlich über die gemeinsamen Wrapper `vfl-in-point`/`-string`/
|
||||
`-real`/`-int`/`-value`/`-selection` gehen, die zentral in `vfl-journal-record`
|
||||
protokolliert werden – keine einzelne Aufrufstelle im Bau-Ablauf musste dafür
|
||||
angefasst werden. Modus 3 ist bewusst reine Konsole (`getstring`/`getreal`/
|
||||
`getint`, kein Journal) und wird stattdessen direkt in `vf-linienzug-modus3`
|
||||
mit eigenen `dbgmsg`-Aufrufen an jeder Frage/Antwort geloggt.
|
||||
|
||||
```lisp
|
||||
;; In der BricsCAD-Konsole VOR dem Befehl FOERDERANLAGE:
|
||||
(dbg-schalter-on "vfl-modus1")
|
||||
;; ... FOERDERANLAGE -> linienzug -> Modus 1 durchspielen ...
|
||||
;; -> Datei DXFM_LOG/vfl_modus1.dbg enthält Session + alle Eingaben
|
||||
(dbg-schalter-off "vfl-modus1") ; wieder abschalten
|
||||
```
|
||||
|
||||
Muster in einer Routine:
|
||||
|
||||
```lisp
|
||||
(setq dbg-an (dbg-schalter-open "vfl-modus3" "vfl_modus3.dbg" "DXFM_LOG"))
|
||||
(if dbg-an (dbgmsg "FRAGE: ..."))
|
||||
;; ... get* ...
|
||||
(if dbg-an (progn (dbgmsg "ANTWORT:") (dbg 'wert) (dbgflush)))
|
||||
;; am Ende:
|
||||
(if dbg-an (progn (dbgreturn ergebnis) (dbgclose)))
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### `ssg_dialog.lsp` – Dialog-Pattern für Modul-Einfüge-Makros
|
||||
|
||||
Reference in New Issue
Block a user