Ren'Py does not generally have support for breakpoint/step-by-step debugging. Though, a lot of Ren'Py is just pure Python, so you could potentially try running a Python breakpoint debugger on some Python code that's part of your game - but I haven't personally tried this.
I think Susan has the best tips for debugging Ren'Py. Note, though, that renpy.watch is not as smart as an IDE debugger; it'll literally just evaluate the expression that you give it. So if you tell renpy.watch to evaluate b, and b is an object, it probably won't give you all the fields in the object b. You'll have to say renpy.watch("[b.var1, b.var2, b.var3]") or something like that.
A few other things that may help you find bugs:
config.debug_image_cacheconfig.debug_soundconfig.debug_text_overflowAnd more advanced things you could try:
config.label_callback - This should be a function that is called whenever a label is called. In this label callback function, use an if statement checking if the label name is something specific. If so, make something happen (e.g. make some special text show up onscreen). This way you could figure out whether a certain label is being called or not.
config.label_overrides - Another thing you can use to check whether a certain label is being called or not.