Depending on the backend (HTTP::Server::Simple, Starman, Corona, ...) you get persistence of connections and other values, or not (for example with Plack::Handler::CGI). The files are loaded on program startup, which is server startup for the permanent servers and page request for CGI.
Having in-process debugging is something I have no experience with. Only the outermost part of your web application is an anonymous subroutine, everything else can be named subroutines, so finding your way around should work the same still. I guess a quick test whether your debugging setup works would be to just use one of the Plack example applications, set your breakpoints and see whether the program is debuggable under whatever server you plan to use.