I'm not familiar with Smug, but I would guess that
the combinator is implemented using LISP macros which are than expanded into "real" source code (lisp lists)
which is evaluated directly and can halt on break points.
In programing languages which do not have true macros The combinator API normally creates a data structure representing the grammar which is than interpreted Which usually makes debugging harder and the parsing slower.