Lou Montana/Sandbox – User
Lou Montana (talk | contribs) m (Organising a bit) |
(rm cat) |
||
Line 109: | Line 109: | ||
[[Category:ArmA 2: Editing]] | [[Category:ArmA 2: Editing]] | ||
[[Category:Take_On Helicopters: Editing]] | [[Category:Take_On Helicopters: Editing]] | ||
[[Category:Arma 3: Editing]] | [[:Category:Arma 3: Editing]] | ||
[[Category:Scripting Topics]] | [[Category:Scripting Topics]] | ||
[[Category:Sandbox]] | [[Category:Sandbox]] |
Revision as of 19:43, 5 April 2019
Template:SideTOC Debugging Techniques are ways in which developers can debug, or find out where errors or unexpected outcomes are occurring within their scripts.
Code
Various links about code and how to write it:
IDE and Syntax Highlight
Syntax errors can be a frequent occurrence when developing scripts. Syntax highlight will help you find typos in commands and in your scripts.
An Integrated Development Environment, shortened to IDE is as its name says a development environment program, providing syntax highlight helping you writing code.
See further Downloadable Tools page section for download links.
Finding Errors
To solve an issue, you must first find out there is one. Besides your script not having the wanted effect (if any), an error message helps you locate the code issue.
- Be sure to use -showScriptErrors startup parameter to display the error on-screen
- To ensure error location in your script, prefer preprocessFileLineNumbers to preprocessFile
- Read RPT files for more information (make sure -noLogs startup parameter is not enabled or the logs will never be filled)
- Scripts running on a server use the ArmaXServer.RPT file which has varying locations depending upon the type of server being run.
- Scripts running on a client use the ArmaX.RPT file.
- RPT files location is usually %localappdata%\ArmaX
Removing Errors
Once the script error is located: be sure to check the BiKi page corresponding to the command/function you are using!!
Common errors
Error message | Cause | Solution |
---|---|---|
Error Undefined variable in expression: _varName | variable _varName has not been initialised properly in this context. | |
Error Zero divisor | Pretty self-explanatory, somewhere in your code is a division by zero. | * Make sure to check if your divisor is different from zero before dividing. |
Generic error | Further code reading is required. | * If it happens on a sleep/uiSleep/waitUntil, you may be in unscheduled environment. |
Working with Addons
If you are working on an addon, repacking a PBO can be time-intensive. This operation can be replaced simply by creating a basic mission in the "Missions" or "MPmissions" (if your feature is multiplayer-specific) folder of your game installation, and running the mission locally. The easiest way of accomplishing this is by the use of Event Scripts to run your code such as init.sqf. Once you have tested your code this way, you can then sequentially pack your PBO when major changes have been made, rather than for each debug session of a script or piece of code.
Debugging specific sections of code
Although primitive, the combined use of diag_log, systemChat/hint and format can help to debug the content of function arguments. In the case that specific pieces of code do not run, or if specific if conditions don't appear to fire, debugging the variable content with diag_log can be useful. As with all debugging, as long as the developer is methodical and logical in checking each section of code that runs, finding bugs and resolving them can be straightforward.
Downloadable Tools
IDE
- Sbsmac's Squint: Forum post - website
Provides a fully-featured code editor which allows for syntax highlighting, displaying of errors and code correction. - krzmbrzl's SQDev: Forum post - GitHub repository
Provides code validation (linting) while you are typing it.
Syntax Highlight
- Sanjo's Notepad++ SQF (npp-sqf, plugin for Notepad++): Forum post - GitHub repository
Debug Console
A Debug Console is a powerful tool; it is very helpful at debugging your scripting in real time.
- Arma 3
- The game already features Arma 3 Debug Console.
- Charon Productions' TroopMon3 for Arma 3 (alpha)
- Take On Helicopters
- The game already features TKOH Debug Console.
- Arma 2
- Str's Debug console
- Charon Productions' TroopMon3 for Arma 2 (TroopMon2 being obsolete and rewritten into this TroopMon3)
- DevCon by Kju
- Arma
- Charon Productions' TroopMon v0.8b - Complex debugging system providing lot of information for mission-makers, especially about AI.
- Str's Debug Console - available in all singleplayer missions, intros and outros. Easy and simple to use (Escape-Enter execute)
- Operation Flashpoint
Emulators and Debuggers
- X39's SQF VM - an SQF emulator
- Dedmen's Arma Script Profiler
- Dedmen's Arma Debug Engine