IV. cpp 
	A. Tool to transform code before compilation
		1. Can be used for more than C code - Xresources, perl
			- not recommended for generic macro usage
	B. Inclusion of header files
		1. #include
		2. "" and <> variants
	C. Macro expansion
		1. #define
		2. macros with args
	D. Conditional compilation
		1. #ifdef / #ifndef
		2. #if
			- C syntax
			- defined allows #ifdef
		3. #elif, #else, #endif
		4. #if 0 ... #endif to omit code rather than commenting
	E. Demo:
		/lib/cpp -P foo
		/lib/cpp -P -DINCLUDE_BAR foo
		/lib/cpp -P -DINCLUDE_BLAH foo

V. gdb
	A. Allows you to inspect internals of program
	B. Compile with -g option for symbol names
		1. strange interaction with -O
	C. Source code info
		1. list
	D. Step-through
		1. run, args, env, cont
		2. n - next line of current function
		3. s - next command, enters functions
	E. Attaching running process
	F. Core dumps
		1. Snapshot of process at death; can inspect data, stack
		2. demo - gdb buggy core
	G. Breakpoints, watchpoints
		1. break [filename:]functionname
		2. break [filename:]lineno
		3. break +-offset
		4. break... if COND
		5. watch EXPR
			- very slow, but useful
	H. Inspecting data
		1. print EXPR
	I. Backtrace
		1. where / bt
		2. up / down, allows you to view vars in different frames
	J. Modifying data
		1. set [var]


