To determine the set of constraints that cause infeasibility, there are two questions you can ask Gurobi Optimizer:
- What subset of the model is responsible for making it infeasible?
- What are the changes you may need to apply to your model to regain feasibility?
Note that an infeasible model may have multiple IIS'es. The one returned by Gurobi is not necessarily the one with minimum cardinality; there may exist others with fewer constraints or bounds.
To answer the second question you can compute the smallest perturbation to the model that would be sufficient to recover model's feasibility (i.e., smallest with respect to a specified metric). Here, the corresponding methods are model.feasRelax() and model.feasRelaxS() (think of 'S' suffix in the naming convention as 'Simplified').
In addition, there is a page in the documentation that covers this subject.