What do you mean "step into assert"?
If you indeed want to see what assert itself does, then you need to build an fpc (an rtl) with debug info. (e.g. using fpcupdeluxe).
It is in system.inc
Procedure fpc_assert(Const Msg,FName:Shortstring;LineNo:Longint;
ErrorAddr:Pointer); [Public,Alias : 'FPC_ASSERT']; compilerproc;
begin
if codepointer(AssertErrorProc)<>nil then
AssertErrorProc(Msg,FName,LineNo,ErrorAddr)
else
HandleErrorAddrFrameInd(227,get_pc_addr,get_frame);
end;
Mind that this is an intrinsic. As you can see the boolean result of the condition is not in the parameters => that code is inlined into your calling procedure. So the above is only called, if the condition fails.
Afaik it then depends. If any unit in your app (including recursively any unit you used) uses "SysUtils then it throws an exception.
And if you want you can catch that exception.
Most of the time the assert is simply used to alert of the error, and then meant to stop the exe.
Otherwise use "if ... then raise exception.create();"