Albert,
Ceres uses a trust region algorithm to solve the optimization problem. The algorithm automatically controls the step size. It would be helpful to look at a log from when you call solve to know more, but there are a variety of reasons why it the algorithm is stopping.
Ill-conditioning of the problem is one and a local minimum is another.
You can try changing the initial trust region radius (See solver.h) but I doubt it will solve your problem.
As for evaluating residuals see the docs for Problem::Evaluate.
Sameer