c语言程序调试方法有哪些