====== Crossfire debugging tips ====== This page contains some tips for debugging. ===== Valgrind ===== Valgrind is a tool to find memory related errors, for example reading a variable before initializing it, reading or writing non-allocated memory, memory leaks, and so on. However, due to the cfpython plugin, valgrind output tends to get filled up by a lot of python related valgrind errors. These are false positives (or at least nothing related to us). There is a solution: valgrind got a feature called suppression file. It lists errors valgrind should ignore. Here is an example of such a file, this works on my system, you will likely need to customize it, for your python system, and for changing lib64 to lib unless you are on a 64-bit platform. { Python cond Memcheck:Cond obj:/usr/lib64/libpython2.4.so.1.0 } { Python value 8 Memcheck:Value8 obj:/usr/lib64/libpython2.4.so.1.0 } { Python invalid read 4 Memcheck:Addr4 obj:/usr/lib64/libpython2.4.so.1.0 } { Python mem leak Memcheck:Leak obj:/usr/lib64/libpython2.4.so.1.0 } Then run valgrind something like this: valgrind --suppressions=path/to/suppressions-file --leak-check=full ./crossfire-server This will ignore errors that are not interesting for crossfire developers.