Google Debugger
Author: Ronald Fung
Creation Date: 13 June 2023
Next Modified Date: 13 June 2024
A. Introduction
Cloud Debugger was deprecated on May 16, 2022
and the service was shut down on May 31, 2023
. To help with your debugging needs after this shutdown, we’ve built an open source CLI tool, Snapshot Debugger.
Snapshot Debugger
Snapshot Debugger is an open source debugger that lets you inspect the state of a running cloud application, at any code location, without stopping or slowing it down. It isn’t your traditional process debugger but rather an always on, whole app debugger taking snapshots from any instance of the app.
You can use the Snapshot Debugger with any deployment of your application, including test, development, and production. The debugger adds less than 10ms to the request latency only when the application state is captured. In most cases, this latency isn’t noticeable by users.
B. How is it used at Seagen
As a biopharma research company, Seagen can benefit from using Google Cloud Snapshot Debugger for their application debugging needs. Here are some ways Seagen can use Google Cloud Snapshot Debugger:
Migrating from Microsoft Azure: Seagen can migrate their existing application debugging configurations from Microsoft Azure to Google Cloud Snapshot Debugger by exporting the configurations from Azure and importing them into Google Cloud Snapshot Debugger. This can be done using the Google Cloud Snapshot Debugger API or other migration tools.
Debugging live applications: Seagen can use Google Cloud Snapshot Debugger to debug live applications running on Google Cloud Platform. The debugger can capture snapshots of the application’s call stack and variables at any point in time, allowing Seagen to identify and troubleshoot issues that may be impacting the application’s performance or functionality.
Debugging in production environments: Seagen can use Google Cloud Snapshot Debugger to debug applications in production environments without impacting the performance or availability of the application. The debugger can capture snapshots of the application’s state without interrupting the application’s execution, allowing Seagen to quickly diagnose and resolve issues.
Debugging across multiple programming languages and platforms: Google Cloud Snapshot Debugger supports multiple programming languages and platforms, including Java, Node.js, .NET, and Python, among others. This makes it a versatile solution that can be used across different applications and use cases.
Debugging with integration with other Google Cloud services: Seagen can integrate Google Cloud Snapshot Debugger with other Google Cloud services, such as Google Cloud Logging and Google Cloud Monitoring, to gain deeper insights into their application’s behavior and performance. This integration can help Seagen to identify and troubleshoot issues more quickly and effectively.
Overall, by using Google Cloud Snapshot Debugger, Seagen can benefit from a powerful and scalable solution for their application debugging needs. With its support for migrating existing application debugging configurations, debugging live applications, debugging in production environments, supporting multiple programming languages and platforms, and integrating with other Google Cloud services, Google Cloud Snapshot Debugger provides a range of options that can meet the needs of a variety of workloads and use cases.
C. Features
Google Cloud Snapshot Debugger offers a range of features for application debugging needs. Here are some of the key features of Google Cloud Snapshot Debugger:
Debugging live applications: Google Cloud Snapshot Debugger allows users to debug live applications running on Google Cloud Platform without impacting the performance or availability of the application. It can capture snapshots of the application’s call stack and variables at any point in time, allowing users to identify and troubleshoot issues that may be impacting the application’s performance or functionality.
Debugging in production environments: Google Cloud Snapshot Debugger allows users to debug applications in production environments without interrupting the application’s execution. It can capture snapshots of the application’s state without impacting the application’s performance or availability, allowing users to quickly diagnose and resolve issues.
Debugging across multiple programming languages and platforms: Google Cloud Snapshot Debugger supports multiple programming languages and platforms, including Java, Node.js, .NET, and Python, among others. This makes it a versatile solution that can be used across different applications and use cases.
Snapshot collection: Google Cloud Snapshot Debugger can collect snapshots of the application’s state at any point in time, triggered by specific events or conditions, such as unhandled exceptions or high CPU usage. The snapshots can be viewed and analyzed using debugging tools, such as the Stackdriver Debugger Console.
Integration with other Google Cloud services: Google Cloud Snapshot Debugger integrates with other Google Cloud services, such as Google Cloud Logging and Google Cloud Monitoring, to provide a comprehensive debugging solution. Users can combine snapshot data with other performance data to gain deeper insights into their application’s behavior and performance.
Access and permissions management: Google Cloud Snapshot Debugger provides access and permissions management features that allow users to define roles and permissions for different users and groups, and to control access to debugging data based on resource type, location, or other attributes.
Overall, with its support for debugging live applications, debugging in production environments, supporting multiple programming languages and platforms, snapshot collection, integration with other Google Cloud services, and access and permissions management, Google Cloud Snapshot Debugger is a powerful and reliable solution for application debugging needs.
D. Where Implemented
E. How it is tested
Here are the general steps to test Google Cloud Snapshot Debugger:
Set up a Google Cloud Platform project: If you haven’t already, create a Google Cloud Platform project and enable billing. You will need this project to use Google Cloud Snapshot Debugger.
Create a snapshot agent: The snapshot agent is a small piece of code that you add to your application to enable snapshot collection. You can create a snapshot agent for your application by following the instructions in the Google Cloud Snapshot Debugger documentation.
Deploy your application: Deploy your application to a Google Cloud Platform environment, such as Google Kubernetes Engine or Google App Engine. Make sure that the snapshot agent is included in your application code.
Trigger a snapshot: To test snapshot collection, you can trigger a snapshot by causing an error or exception in your application. For example, you can deliberately cause a null pointer exception in your code.
View and analyze the snapshot: Once a snapshot is triggered, you can view and analyze it using debugging tools, such as the Stackdriver Debugger Console. You can inspect the call stack, variables, and other data captured in the snapshot to identify the cause of the error or exception.
Test in a staging environment: Before using Google Cloud Snapshot Debugger in a production environment, it’s a good idea to test it in a staging environment to ensure that it’s working correctly and to familiarize yourself with its features and capabilities.
Overall, testing Google Cloud Snapshot Debugger involves setting up a Google Cloud Platform project, creating a snapshot agent for your application, deploying your application, triggering a snapshot, and analyzing the snapshot using debugging tools. By testing Google Cloud Snapshot Debugger in a staging environment and familiarizing yourself with its features and capabilities, you can ensure that it’s working correctly and effectively.
F. 2023 Roadmap
????
G. 2024 Roadmap
????
H. Known Issues
While Google Cloud Snapshot Debugger is a powerful and reliable solution for application debugging needs, there are some known issues and limitations to be aware of. Here are some of the known issues for Google Cloud Snapshot Debugger:
Limited snapshot retention time: Google Cloud Snapshot Debugger retains snapshots for a limited period of time, typically up to 30 days. If you need to retain snapshots for longer periods of time, you may need to use other debugging solutions or export the snapshot data to another system.
Limited snapshot size: Google Cloud Snapshot Debugger has a limit on the size of snapshots that can be collected, which can vary depending on the programming language and platform being used. If your application generates large snapshots, you may need to use other debugging solutions or optimize your application’s performance to reduce the size of the snapshots.
Limited support for multi-threaded applications: Google Cloud Snapshot Debugger has limited support for multi-threaded applications, particularly those that use complex synchronization mechanisms or multiple threads with similar names. If your application is heavily multi-threaded, you may need to use other debugging solutions or simplify your application’s threading model to make it easier to debug.
Limited support for some programming languages and platforms: While Google Cloud Snapshot Debugger supports a wide range of programming languages and platforms, there may be some cases where it does not support certain language features or platform configurations. If you encounter issues with your application’s language or platform, you may need to use other debugging solutions or modify your application to work with Google Cloud Snapshot Debugger.
Overall, while there are some known issues and limitations with Google Cloud Snapshot Debugger, it remains a powerful and reliable solution for application debugging needs. By being aware of these limitations and working within their constraints, you can effectively use Google Cloud Snapshot Debugger to diagnose and resolve issues in your applications.
[x] Reviewed by Enterprise Architecture
[x] Reviewed by Application Development
[x] Reviewed by Data Architecture