How to understand MLIR Analysis code logic?

Hi everyone here:

Currently I’m working for testing AffineDataCopyGeneration for my project. I’m curious about how this pass implement but due to the lack of big project experiences, when I follow code routine I find too many objects and method nested. It’s difficult to understand how it works very well.

I have tried gdb and printf debugging but it still tough for me.

Any suggestions here? Thanks very much !