Debugging in C Guidelines
		Finding Bugs
		
			To find bugs in your code, follow the steps below.
		
		
			- If you are getting a segmentation fault, check your code
				using  Valgrind or
				gdb. This will help you identify
				the line where the problem is taking place.
			
- Make sure you are generating the expected results by using
				diff. In some cases a single character
				could make you fail a test.
			
- 
				If your code generates the expected results in grace, but not
				in the submit server try  Valgrind.
				Valgrind can help you identify the use of uninitialized variables
				and problems with dynamic memory allocation.
				You can also try to set to 0 uninitialized variables and pointer
				variables to NULL. This could help you track the problem.
			
- 
				Run splint on your code. For example, splint my_prog.c.
			
- 
                                Compile your code with the 
				gcc option -fsanitize=address (e.g., gcc -fsanitize=address p2.c).  
				When you run the code you could get some diagnostic information.  
				If you are running valgrind on your code, probably
			       	you should not compile your code with this option.  
			
- 
				If none of the above steps identify the problem,
				try the following:
				
					- Simplify the input/case that is generating the problem.
					
- Once you have simplified the input/case, use the debugger
						(gdb) to step through your code. Information on
						gdb basics can be found at gdb.
					
 
Frequently Seen C Mistakes
			A list of frequently seen mistakes can be found at
			mistakes.
		
		Development Strategy for C Programs
		
			See 
			Development Strategy.