| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Fehlermeldung in meiner VLX-Anwendung (1142 mal gelesen)
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 26. Apr. 2005 15:51 <-- editieren / zitieren --> Unities abgeben:
Hallo, in meiner VLX-Anwendung treten seit Wochen immer wieder mal Fehlermeldungen wie z.B. "Fehlerhafter Argumenttyp: fixnump: nil" auf. Das passiert unregelmäßig und auch bei verschiedene Befehle. Starte ich nach Auftreten des Fehlers den gleichen Befehl noch einmal, ist der Fehler weg. Auch im Lisp-Debugger tritt der Fehler nicht auf. Dadurch habe ich im Moment keinerlei Anhaltspunkte, welche Variable in meiner VLX-Anwendung nil ist. Deshalb meine Frage: Ist es irgendwie möglich, die defun-Funktion (oder noch besser die Stelle des Fehlers im Code) zu erhalten, in der der Fehler entstanden ist? Danke im Voraus und viele Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 26. Apr. 2005 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Hallo Bernd, kann es sein, daß Deine Funktion eine globale Variable verwendet, die nicht immer grundsätzlich gesetzt ist? z.B. (defun c:test ( / ) (setq a (* 1 b))) Wenn ich innerhalb der Zeichnung die Variable b (setq b 1) setze, dann kommt das erwartete Ergebnis raus, wenn die Variable b aber nil ist, dann kommt folgende Fehlermeldung: Fehlerhafter Argumenttyp: numberp: nil Ich würde also prüfen, ob Du globale Variablen verwendest, deren Inhalte vielleicht durch ein anderes Programm verändert werden.
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 27. Apr. 2005 08:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Joern, Zitat: Original erstellt von joern bosse:
kann es sein, daß Deine Funktion eine globale Variable verwendet, die nicht immer grundsätzlich gesetzt ist? ... Ich würde also prüfen, ob Du globale Variablen verwendest, deren Inhalte vielleicht durch ein anderes Programm verändert werden.
Ich habe einige globale Variablen, das eine solche Überprüfung in meinen vielen Funktion eigentlich unmöglich macht, sofern ich den Kreis der Funktionen und/oder der Variablen nicht eingrenzen kann. Deshalb auch meine Frage nach der Möglichkeit, ob man die Funktion beim Abbruch feststellen kann. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Apr. 2005 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Hallo Bernd, es gibt noch die Funktion "trace" Damit kannst Du Deine Funktionen bezüglich der übergebenen Variablen und der Ergebnisse prüfen, kann Dir aber nicht mehr dazu sagen, weil ich diese Funktion selber auch noch nie so richtig verwendet habe. Und so gehts: Befehl: (trace test) wobei test die zu überwachende Funktion ist wenn Du jetzt eine vlx-Datei aufrufst, die auch die Funktion "test" verwendet erscheint in der Befehlszeile folgendes Protokoll: Eingabe von (TEST "Testvariable") Ergebnis: ("testergebnis")
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 27. Apr. 2005 10:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Joern , Zitat: Original erstellt von joern bosse:
es gibt noch die Funktion "trace" Damit kannst Du Deine Funktionen bezüglich der übergebenen Variablen und der Ergebnisse prüfen, kann Dir aber nicht mehr dazu sagen, weil ich diese Funktion selber auch noch nie so richtig verwendet habe. Und so gehts:Befehl: (trace test) wobei test die zu überwachende Funktion ist wenn Du jetzt eine vlx-Datei aufrufst, die auch die Funktion "test" verwendet erscheint in der Befehlszeile folgendes Protokoll: Eingabe von (TEST "Testvariable") Ergebnis: ("testergebnis")
ich kenne die Funktion "trace" im Moment auch nicht. Deshalb muss ich in der Entwicklerhilfe darüber zuerst einmal nachlesen. Ich melde mich wieder, ob mich die Funktion bei meinem Problem weiter gebracht hat. Danke und viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 04. Mai. 2005 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
du holst dir dein Lispprogramme in die vlide, und stellst im Menü "Debugging->bei Fehler unterbrechen" ein. tritt jetzt ein Fehler auf kommst du mit Ctrl-Shft-G (suchen-> letzte Arbeitsposition) zum Lispprogramm (und zwar zur letzten funktionierenden Anweisung) , dass den Fehler verursacht hat. ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 04. Mai. 2005 16:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Anton, Zitat: Original erstellt von fuchsi: du holst dir dein Lispprogramme in die vlide, und stellst im Menü "Debugging->bei Fehler unterbrechen" ein.tritt jetzt ein Fehler auf kommst du mit Ctrl-Shft-G (suchen-> letzte Arbeitsposition) zum Lispprogramm (und zwar zur letzten funktionierenden Anweisung) , dass den Fehler verursacht hat.
das habe ich schon mehrmals versucht, aber leider tritt der Fehler dann nicht mehr auf. Auch wenn ich den abgebrochenen Befehl ohne Debugger sofort nochmal starte, tritt der Fehler nicht mehr auf. Trotzdem danke und viele Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 05. Mai. 2005 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 09. Mai. 2005 07:48 <-- editieren / zitieren --> Unities abgeben:
Hallo benwisch, Zitat: Original erstellt von benwisch: nur so'ne Vermutung.... hast du mal deine Anwendung nur als FAS geladen und getestet? Geht's dann?
ich habe ca. 800 FAS-Dateien und es wäre ein großer Aufwand (besonders bei den Benutzern), die einzeln zu laden. Kannst Du mir deshalb kurz erklären, warum es bei geladenen FAS-Dateien nicht zu dem Fehler kommen soll? Danke und viele Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 09. Mai. 2005 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Hallo Bernd 1.Vermutung
- schau dir mal diesen Link an, vielleicht hilft dir das schon mal weiter...
Zitat: Ich habe einige globale Variablen, das eine solche Überprüfung in meinen vielen Funktion eigentlich unmöglich macht, sofern ich den Kreis der Funktionen und/oder der Variablen nicht eingrenzen kann.
2. Vermutung
- globale Variablen können von anderen Programmen überschrieben werden, wenn sie nicht besser benannt werden.
- Bsp. : gute/schlechte Varibalennamensgebung
schlecht -> color besser -> *color* noch besser -> *[eindeutes Prefix]color*
Tipp zum auffinden von globalen Variablen, hat uns/mir Mapcar hier zwei kleine Lisp-Tools zur Verfügung gestellt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 09. Mai. 2005 13:23 <-- editieren / zitieren --> Unities abgeben:
Hallo benwisch, Zitat: Original erstellt von benwisch:
[b]1.Vermutung
- schau dir mal diesen Link an, vielleicht hilft dir das schon mal weiter...
[QUOTE]Ich habe einige globale Variablen, das eine solche Überprüfung in meinen vielen Funktion eigentlich unmöglich macht, sofern ich den Kreis der Funktionen und/oder der Variablen nicht eingrenzen kann.
2. Vermutung
- globale Variablen können von anderen Programmen überschrieben werden, wenn sie nicht besser benannt werden.
- Bsp. : gute/schlechte Varibalennamensgebung
schlecht -> color besser -> *color* noch besser -> *[eindeutes Prefix]color*
Tipp zum auffinden von globalen Variablen, hat uns/mir Mapcar hier zwei kleine Lisp-Tools zur Verfügung gestellt.[/B][/QUOTE] danke für die Informationen. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |