A computer-executable method for remote debugging software in a cloud environment, the computer-executable method comprising: communicating, by a debug client on a developer machine, with a controller to identify instances (306, 307) of a software application to be debugged, wherein the instances of the software application are running on virtual machines, VMs, in the cloud environment, wherein the controller is deployed to one of the VMs (303, 304), wherein a debug connector (309, 310) is deployed to each of the VMs, wherein the debug client sends a request to the controller to discover a topology of the cloud environment, and wherein the controller discovers the topology of the cloud environment using information from the cloud environment runtime and framework by communicating with the debug connectors and requesting information about the instances of the software application to be debugged, and wherein a composite view of the cloud topology is created for the debug client by presenting the software instances as single application for debugging to the debug client; identifying, by the controller, the VMs in the cloud environment that are running the instances of the software application and processes associated with the instances of the software application, wherein the controller returns information for those processes running on the VMs to the debug client, for which the debug client has permissions to access; selecting the software instance to be debugged using the debug client; receiving, at the controller, a request from the debug client to debug the selected instance of the software application; instructing, by the controller, an agent to configure the VM associated with the selected instance for remote debugging, wherein the agent runs on the VM associated with the selected instance, wherein the debug connector deployed on the VM associated with the selected instance acts as the agent to configure the VM, and wherein the agent configures the VM by adding permissions for a developer to the VM; establishing a connection between the debug client and a monitoring application on the VM associated with the selected instance of the software application; and debugging the selected instance of the software application using the debug client. communicating, by a debug client on a developer machine, with a controller to identify instances (306, 307) of a software application to be debugged, wherein the instances of the software application are running on virtual machines, VMs, in the cloud environment, wherein the controller is deployed to one of the VMs (303, 304), wherein a debug connector (309, 310) is deployed to each of the VMs, wherein the debug client sends a request to the controller to discover a topology of the cloud environment, and wherein the controller discovers the topology of the cloud environment using information from the cloud environment runtime and framework by communicating with the debug connectors and requesting information about the instances of the software application to be debugged, and wherein a composite view of the cloud topology is created for the debug client by presenting the software instances as single application for debugging to the debug client; wherein the debug client sends a request to the controller to discover a topology of the cloud environment, and wherein the controller discovers the topology of the cloud environment using information from the cloud environment runtime and framework by communicating with the debug connectors and requesting information about the instances of the software application to be debugged, and wherein a composite view of the cloud topology is created for the debug client by presenting the software instances as single application for debugging to the debug client; identifying, by the controller, the VMs in the cloud environment that are running the instances of the software application and processes associated with the instances of the software application, wherein the controller returns information for those processes running on the VMs to the debug client, for which the debug client has permissions to access; wherein the controller returns information for those processes running on the VMs to the debug client, for which the debug client has permissions to access; selecting the software instance to be debugged using the debug client; receiving, at the controller, a request from the debug client to debug the selected instance of the software application; instructing, by the controller, an agent to configure the VM associated with the selected instance for remote debugging, wherein the agent runs on the VM associated with the selected instance, wherein the debug connector deployed on the VM associated with the selected instance acts as the agent to configure the VM, and wherein the agent configures the VM by adding permissions for a developer to the VM; establishing a connection between the debug client and a monitoring application on the VM associated with the selected instance of the software application; and debugging the selected instance of the software application using the debug client.