When your program seams to work as expected and you don't know of any errors, is there still a debugging process you should follow before releasing it. Besides using valgrind to check for memory leaks.
Usually you build a checklist you must see fully checked before releasing the product. The checklist usually list all 100% of the program's features. If combinations/permutations exist, the checklist covers them all.
And it isn't a debugging process, it is a quality assurance process.