<p>As a developer, how do you use gdb to track down bugs within your code?  What techniques tricks do you use to make your life easier?</p>

In general you find something that isn't how it should be, and work backwards until you understand why.
The most obvious is the most useful:  Setting a breakpoint on a function or line number and walking through the code line by line.
Another handy tip is to have show functions for all your structures/objects even if they are never used in your program, because you can run these functions from within gdb:
```
```
gdb> p show_my_struct(struct)

My custom display of Foo:
   ...
```
```
Watchpoints can be really handy too, but may slow down your program a lot. These break the flow when the value of a variable or address changes.:
```
```
gdb> watch foo
Watchpoint4: foo
gdb>
```
```