Free Trial Book a Demo
azure function remote debugging

How to remote debug an HTTP trigger Azure Functions in Visual Studio 2022

Categories: Azure Serverless Tags:

Sometimes it may not be easy to debug Azure Functions deployed on Azure since we cannot do inline debug through the Azure Portal. An option for us is to write information to the Logs console in key parts of our code to get insights into what’s happening inside our Function. We can do that using the following sentence:

  • log.LogInformation(“C# HTTP trigger function processed a request.”);

debug Azure Functions

Another option, especially if we are developing our Azure Functions inside Visual Studio, is to run the Function locally. We can easily do that by clicking the play button:

click play

Click F5 or from the menu, select the option Debug > Start Debugging:

start debugging

It will open a Microsoft Visual Studio Debug Console that will start the Azure Function Runtime. When ready, it will provide a URL that you can use, for example, in Postman, to submit a request to our Function locally:

Microsoft Visual Studio Debug Console

But sometimes, that can be enough, and we want to see strange behaviors that could happen once we deploy to Azure. So, in addition to all these previous logging and debugging capabilities, we can also do remote debugging on our Azure Functions. To do that, we need to:

  • Deploy/publish our Azure Functions on debug configuration mode (not release otherwise we will face some issues)
  • Set breakpoints inside our code
  • Configure our Azure Function App to allow remote debugging
  • Start debugging by attaching to a w3wp.exe remote process
  • Submit a message to your HTTP trigger Azure Function

Deploy/publish our Azure Functions on debug configuration mode (not release: otherwise, we will face some issues)

In this step, you will publish our Azure Function from our Visual Studio project to an existing Azure Function App you provisioned in Azure. The easier way to deploy our Azure Functions is to:

  • On the Azure Portal, access your Azure Function App, and from the Azure Function App menu select the option Get publish profile
  • It will download a <function-app-name>.PublishSettings that we will be using to configure our publish profile inside Visual Studio.
  • Open your Azure Function Visual Studio project
  • Right-click on the project name and from the context menu select Publish

debug configuration mode

  • If you don’t have a Publish profile, this will open a Publish window for you to select where you want to publish. We will choose the option Import Profile and click Next

Import profile

  • On the Import publish settings file window, browse and choose the <function-app-name>.PublishSettings that we previous download and select Finish

select finish

  • These steps will create a Publish profile for us.
  • Now on the Publish profile window, we need to edit the Configuration option in the Settings panel to publish our Function in Debug mode. We can do that by clicking the Edit button.

azure function remote debugging

  • On the Profile settings window, on the Configuration dropbox select the option Debug | Any CPU and click Save.

azure function remote debugging

  • And finally, click the Publish button on the top right corner.

publish

In the end, if everything goes well you receive a Publish success message as you see in the above picture.

Set breakpoints inside our code

As always, you need to go inside your code and see breakpoints:

Set breakpoints

Configure our Azure Function App to allow remote debugging

By default, the debug remote feature is disabled on our Azure Function Apps, and we need to enable it to be able to accomplish this task. To do that, we need to:

  • On the Azure Portal, access your Azure Function App, from the left context menu select the option Configuration present in the Settings section
  • On the Configuration page, select the General option settings from the top menu
  • And on the General settings page, on the Debugging section
    • On the Remote debugging property select the option On
    • On the Remote Visual Studio version property, from the dropbox select the Visual Studio version you are using, in my case 2022.

remote debugging

Start debugging by attaching to a w3wp.exe remote process

In resume, for us to be able to remote debug you need to guarantee that:

  • At least one breakpoint is setup
  • Our DLL compile and publish on Azure should be on Debug
  • The DLL version published on Azure should match the local version

So, back to our Visual Studio solution:

  • On the Publish profile window, select the Open site that will be available once you publish the Azure Function to Azure.

publish the Azure Function

  • It will open the Function App webpage in your browser. Leave the browser open.

open the Function App webpage

  • After the Web App opens in the browser, return to Visual Studio and click on Debug > Attach to Process

Attach to Process

  • On the Attach to Process window, on the Connection target, we need to enter the URL (without the https://) and the port number which should be 4024
    • In my case, it is: fa-smsdn-poc.azurewebsites.net:4024
    • You can get this URL on the Azure Portal on the overview page of your Azure Function App

Azure Function App

    • On the first time, it will probably prompt a window for you to authenticate asking you for a Username and Password. You can access the values of the username and password to use on your <function-app-name>.PublishSettings that we download earlier on the userName and userPWD attributes of the publishProfile element.

credentials

  • On the Attach to Process window, on the Attach to property, click on the Select button and select the option Managed (.Net Core, .NET 5+). Click OK.
    • Of course, this can be adjusted depending on your version.

code type

  • Finally, from the Available processes, select the w3wp.exe and click Attach.

attach to process

Once you click, Attach, you enter debug mode.

debug mode

Submit a message to your HTTP trigger Azure Function

To finish, we need to submit a message to our Azure Function. You can easily accomplish this on the Azure Portal:

  • On the Azure Portal, access your Azure Function App, from the left context menu select the option Functions present in the Functions section
  • On the Functions page, select the Function you want to debug

HTTP trigger Azure Function

  • On the Function page, select Code + Test from the left context menu, and then from the top menu select the option Test/Run 
  • Provide a test message on the body and other configurations required like headers and click Run.

azure function remote debugging

If everything goes well, your breakpoint will be hit!

azure function remote debugging

Enjoy it!

Sandro Pereira

Jun 28, 2022

WHITEPAPPER

Logic App CI/CD from zero to hero

Download