GDB will remove all breakpoint and set it back repeatly

When you set the breakpoint by input the “b” command, the gdb will not set it immediately, it will wait until the user pressed “c” to cont execute the program. After you pressed “c”, gdb will set all the breakpoints for you. The most funny thing is : when gdb hit a breakpoint and gain back the control, it will remove all breakpoints, it prevent hanging in the same EIP when you do single-step. Here is the prove:

How gdb set breakpoint