Open the break point window (Menu > View > Debug windows > Breakpoints). And check other breakpoints.
The problem occurs, if another breakpoint is on a line with no code.
e.g in an empty line before the procedure, in a comment, in a type declaration, .... In this case the debugger stops on the first line of code, after the line with the breakpoint.
That can be useful, if a breakpoint was set on an empty line, in the middle of a procedure.
Unfortunately there is no limit how far the breakpoint can be away.
It is a known problem, and needs to be limited, and/or additional feedback needs to be displayed if it happens.
----
Another case (which is fixed in 0.9.31) is, if a breakpoint, is after the last line of code in a unit (empty lines at end of unit).
Then the debugger stops at the first line, of whatever unit just happens to be next in the debuggers internal lists of units.
As I said, this cross unit behaviour is fixed in 0.9.31. However the fix was
NOT ported to the 0.9.30.1 fixes branch. It will
not be in the 0.9.30.2 release either.
----
If your breakpoint list is empty, and the problem still occurs, then please provide the content of the "Debug output" window as described here:
http://wiki.lazarus.freepascal.org/GDB_Debugger_Tips#Create_a_new_Report