If you start with a PDE of the form $$u_t = F(u), \ u(0) = u_0$$ with $u$ taking values in some function space, then solution to the steady state problem corresponds with solutions to $$F(u)=0.$$ In most cases, $F$ contains nonlinearities, differential operators, boundary conditions, etc. when discretized to form a system of ODEs for which you can use Runge-Kutta or some other integrator.
Unless you did something really bad, your solution should converge to the stable steady state solution, but here is how you can check that. If you were to just solve $F(u)=0$ (in the discretized setting), you would typically use Newton's method or some variant. However, this does not come with any guarantee of stability of the solution $u^*$. However, there is a modification of Newton's method that is guaranteed to converge only to stable solutions of the system $u_t = F(u)$, or $u_t=-F(u)$, depending on where you read it.
This method is known as pseudo-transient continuation ($\Psi$TC). It works similarly to the other answer in that it essentially runs a time integrator until the solution update is under some low tolerance, but this method combined this with Newton's Method to converge quadratically once you get close to the stable steady state solution.
Here are some resources:
Slides
Paper
edit: This is equivalent to a type of Rosenbrock integrator, which is used in the Julia tools mentioned in the comments of the other answer.