Difference between revisions of "LSL Errors/pl"
(New page: {{Multi-lang}} {{LSL Header/pl}} ==Komunikaty błędów w czasie uruchamiania== Podzczas wykonywania skrypt może zwrócić błąd "Script run-time error" po którym następuje jeden z n...) |
|||
Line 8: | Line 8: | ||
===Script run-time error: Heap Error=== | ===Script run-time error: Heap Error=== | ||
To oznacza "nie wygaduj nonsensów". Np nie zwracaj listy składającej się z jednego wpisu tworzonego przez procedurę nie zwracającą wyników. | |||
===Script run-time error: Lists may not contain lists=== | ===Script run-time error: Lists may not contain lists=== | ||
Zmienna typu list nie może być elementem innej zmiennej typu list. | |||
===Script run-time error: Math Error=== | ===Script run-time error: Math Error=== | ||
Zmienna typu float lub integer dzielona przez zero itp. | |||
===Script run-time error: Stack-Heap Collision=== | ===Script run-time error: Stack-Heap Collision=== | ||
Stos wszedł na obszar z kodem skryptu lub stertą (heap). | |||
Każdy skrypt ma do dyspozycji 16 KB pamięci, podzielone między stos (stack), kod (bytecode) i stertę (heap). | |||
Ten błąd może być spowodowany zbyt długim skryptem, którego kompilacja powoduje powstanie zbyt dużego kodu. Taki skrypt może się skompilować i zachować poprawnie, ale gdy zrezujesz obiekt z nim, skrypt się zatrzyma, natychmiast lub po jakimś czasie. | |||
Zobacz [[llGetFreeMemory]]. | |||
=== | ===Przykładowe skryty generujące błędy wykonania=== | ||
Skompiluj i wykonaj poniższe skrypty żeby zobaczyć komunikaty błędów. | |||
<pre> | <pre> | ||
Line 82: | Line 82: | ||
</pre> | </pre> | ||
== | ==Komunikaty błędów podczas kompilacji== | ||
The SL GUI may reject some code that you feel is perfectly clear, printing ERROR at you and then explaining with some further complaint. | The SL GUI may reject some code that you feel is perfectly clear, printing ERROR at you and then explaining with some further complaint. |
Revision as of 04:09, 25 March 2008
LSL Portal | | | Funkcje | | | Zdarzenia | | | Typy | | | Stałe | | | Potoki | | | Biblioteka Skryptów | | | Tutoriale |
Komunikaty błędów w czasie uruchamiania
Podzczas wykonywania skrypt może zwrócić błąd "Script run-time error" po którym następuje jeden z następujących komunikatów:
Script run-time error: Heap Error
To oznacza "nie wygaduj nonsensów". Np nie zwracaj listy składającej się z jednego wpisu tworzonego przez procedurę nie zwracającą wyników.
Script run-time error: Lists may not contain lists
Zmienna typu list nie może być elementem innej zmiennej typu list.
Script run-time error: Math Error
Zmienna typu float lub integer dzielona przez zero itp.
Script run-time error: Stack-Heap Collision
Stos wszedł na obszar z kodem skryptu lub stertą (heap).
Każdy skrypt ma do dyspozycji 16 KB pamięci, podzielone między stos (stack), kod (bytecode) i stertę (heap).
Ten błąd może być spowodowany zbyt długim skryptem, którego kompilacja powoduje powstanie zbyt dużego kodu. Taki skrypt może się skompilować i zachować poprawnie, ale gdy zrezujesz obiekt z nim, skrypt się zatrzyma, natychmiast lub po jakimś czasie.
Zobacz llGetFreeMemory.
Przykładowe skryty generujące błędy wykonania
Skompiluj i wykonaj poniższe skrypty żeby zobaczyć komunikaty błędów.
default { state_entry() { llOwnerSay((string) [llOwnerSay("bye")]); // Script run-time error: Heap Error } }
default { state_entry() { list once = []; list twice = [once, once]; // Script run-time error: Lists may not contain lists } }
default { state_entry() { float one = 1.0; float zero = 0.0; float quotient = one / zero; // Script run-time error: Math Error llOwnerSay((string) quotient); } }
default { state_entry() { list entries = [0]; while (TRUE) { entries += entries; // Script run-time error: Stack-Heap Collision llOwnerSay((string) llGetListLength(entries)); } } }
Komunikaty błędów podczas kompilacji
The SL GUI may reject some code that you feel is perfectly clear, printing ERROR at you and then explaining with some further complaint.
ERROR : Type mismatch
You must name the .x .y .z .s components of a vector or rotation that you're assigning, you can't assign them all at once from a list, for instance:
default { state_entry() { vector vec = (vector) [1, 2, 3]; // ERROR : Type mismatch llOwnerSay((string) vec); } }
ERROR : Byte code assembly failed -- out of memory
You must make each script reasonably small.
For example, the compiler says you typed too much script if you cascade too many else-if's:
demoElseIfCompileError(integer count) { if (count == 0) { ; } else if (count == 1) { ; } else if (count == 2) { ; } ... ... // ERROR : Byte code assembly failed -- out of memory ... // or ERROR : Syntax error ... else if (count == ...) { ; } }
How much script is too much script can vary astonishingly. For example, the 2007-08 Second Life clients varied as much as 30X, from one to the next. Specifically, the Windows client accepted 22 else-if's and refused 23 else-if's, while Mac OS X was accepting 692 else-if's and refusing 693 else-if's.
Compilation limits that vary by operating system in effect work as a copy-restriction mechanism. Any resident can run the script compiled by the less limited compiler, but residents who have only the more limited compiler cannot save changes to the source.
See llGetFreeMemory, llMessageLinked.
ERROR : Syntax error
You must punctuate the script and spell the words of the script as will please the compiler, of course.
Also you must make each script reasonably small. The compiler may astonishingly complain of a "syntax" error rather than politely complaining more specifically of an "out of memory" "byte code assembly failed" error, when you make a script unreasonably large.
For example, the 2007-08 Windows Second Life client complained of a Syntax error if you cascaded too many else-if's. The exact limits enforced can vary astonishingly. For example, the 2007-08 Windows Second Life client sometimes accepted as many as 22 cascaded else-if's, but also sometimes rejected as few as 19 cascaded else-if's, depending on other details of the script.
Programmers who learned LSL on one compiler may feel that that compiler's limits are reasonable, e.g., up to five hundred cascaded else-if's in Mac OS X, while programmers trained on another compiler may feel instead that only its significantly different limits are reasonable, e.g., no more than a dozen cascaded else-if's in Windows.