Offline Debugging

Debugging serverless apps is a cumbersome task as application teams lose access to underlying server due to the black-box nature of serverless platforms. Developers are content to with what they have: Logs. However, logs stay short to demonstrate the behavior of AWS Lambda applications since they can only reflect the print statements in the code. When you want to achieve granular level of understanding using logs, you need to conduct a manual work that's also costly additional log ingestion and storage prices.

Thundra improves this experience with its unmatched offline debugging experience that provides an IDE like experience for the invocations reported to Thundra.

In the figure below, Thundra shows the code in the Lambda function as it was presented on the IDE of the developer. Using offline debugging, developers can navigate between the lines of code and track the changes in the local variables and function parameters. Plus, Developers can jump into children functions or AWS SDK, HTTP, Redis, MySQL calls as they are stepping into the calls in their IDE.

This is called offline debugging because what we do here is walking through a function invocation after it's completed. It's also known as "non-breaking debugging" in the industry. With this ability to replay what happened in the invocation, we can transform serverless compute into white-box.

Offline debugging is available for Java, Python and Node.js runtimes. In order to use Offline Debugging feature, you'll need to update your Thundra libraries to the newer versions as follow:

  • Node.js: 2.8.0, layer 36 or higher

  • Python: 2.4.4, layer 19 or higher.

  • Java: 2.4.9, layer 39 or higher.

You can enable Offline Debugging by configuring the environment variables of Lambda functions. Please follow the detailed explanation for Node.js, Python and Java.