Development Tips
Environment
The following environment variables are used during while running and debugging pcc:
- BIGLOOSTACKDEPTH
- Set this to a number (e.g. 5) to get a dump of the scheme stack when a bigloo error occurs
- PCC_DEBUG_LEVEL
- For stand alone binaries compiled with a debug build of pcc, setting this variable sets the global debug level (like -d n) while the binary runs. This lets you see runtime debug messages while the compiled binary executes.
- GC_DONT_GC
- Define this variable to disable all garbage collection. Useful if you think an issue you are resolving may be related to memory garbage collection.
- GC_PRINT_STATS
- Defining this variable will force the GC to display collection stats
Debug Level
You can use the -d option to set the Debug Level while compiling and interpreting with pcc. 0 is no debug, 1-2 is "normal" information, 3-6 is debug/development information. Anything above 2 is not meant for end users to see.
If you use a debug level > 1, you will see all external commands being run, and their output. This includes calls to bigloo and gcc. This allows you to run some commands manually if necessary (for example, to tweak command line parameters).
Generating/Examining Intermediate Files
If you want to examine the intermediate scheme or C files produced by pcc and bigloo, use the "-rm" command line switch. This prevents the intermediate files from being removed. After compiling your project with the "-rm" switch, you should have ".scm" and ".c" versions of your source files in your source directory.
Be aware that the .c files are mangled by bigloo. You can demangle them by using the "Demangle" program included in the bigloo source package (examples/Demangle).
Commandline Debugger
You can use the command line debugger (pdb) located in {root}/compiler/pdb to step debug PHP applications (including web applications).
Windows Specific
There is a separate page for problems on Microsoft Windows.
Developer Support
You can find more online help here:
* Forums
* IRC
You can find us on the FreeNode IRC Network in the #roadsend channel.
