Cloud Debugger: Node.js Client
This module provides Cloud Debugger support for Node.js applications.Cloud Debugger is a feature of Google Cloud Platform that lets you debug yourapplications in production without stopping or pausing your application.
A comprehensive list of changes in each version may be found inthe CHANGELOG.
- Cloud Debugger Node.js Client API Reference
- Cloud Debugger Documentation
- github.com/googleapis/cloud-debug-nodejs
Read more about the client libraries for Cloud APIs, including the olderGoogle APIs Client Libraries, inClient Libraries Explained.
Table of contents:
Quickstart
Before you begin
- Select or create a Cloud Platform project.
- Enable the Cloud Debugger API.
- Set up authentication with a service account so you can access theAPI from your local workstation.
Installing the client library
npm install @google-cloud/debug-agentDebugger Agent Settings
To customize the behaviour of the automatic debugger agent, specify optionswhen starting the agent. The following code sample shows how to pass in asubset of the available options.
require('@google-cloud/debug-agent').start({ // .. auth settings .. // debug agent settings: allowExpressions: true, serviceContext: { service: 'my-service', version: 'version-1' }, capture: { maxFrames: 20, maxProperties: 100 }});Seethe agent configuration for a list of possible configurationoptions.
Using the Debugger
Once your application is running, use theDebug UI in your Clouddeveloper console to debug your application. The Debug UI canbe found in the 'Operations -> Debug' section in the navigation panel, or bysimply searching for 'Debug' in the cloud console.
To take a snapshot with the debugger:
- Click in the gutter (line number area) or enter a filename and line numberin the snapshot panel
- The debugger inserts a momentary breakpoint at the specified location inyour code in the running instance of your application.
- As soon as that line of code is reached in any of the running instances ofyour application, the stack traces, local variables, and watch expressionsare captured, and your application continues.
Note: The directory layout of the code that is being debugged does nothave to exactly match the source code specified in the Debug UI. This isbecause the debug agent resolves a snapshot filename by searching for a filewith the longest matching path suffix. If a unique match is found, that filewill be used to set the snapshot.
Firebase Realtime Database backend
The Cloud Debugger API is deprecated and will be turned down in May 2023.
You can use Firebase Realtime Database for data persistence as analternative.
Enabling the agent
To enable the agent, add the following at the top of your app's main scriptor entry point:
require('@google-cloud/debug-agent').start({ useFirebase: true, firebaseDbUrl: 'https://my-database-url.firebaseio.com', firebaseKeyPath: 'path/to/service_account.json',});The following params are optional:
- firebaseDbUrl - https://PROJECT_ID-cdbg.firebaseio.com will be used if notprovided. wherePROJECT_ID is your project ID.
- firebaseKeyPath - Default google application credentials are used if notprovided.
Using the Debugger
Using the Debugger with the Firebase Realtime Database backend requires usingthe Snapshot Debugger CLI.
See thefull Snapshot Debugger CLI documentation.
Limitations and Requirements
Note: There is a known issue where enabling the agent may trigger memoryleaks. See#811
- Privacy issues can be created by setting snapshot conditions that watchexpressions evaluated in the context of your application. You may be ableto view sensitive user data when viewing the values of variables.
- The debug agent tries to ensure that all conditions and watchpoints youadd are read-only and have no side effects. It catches, and disallows,all expressions that may have static side effects to prevent accidentalstate change. However, it presently does not catch expressions that havedynamic side-effects. For example,
o.flooks like a property access,but dynamically, it may end up calling a getter function. We presently doNOT detect such dynamic-side effects. - The root directory of your application needs to contain a
package.jsonfile.
Samples
Samples are in thesamples/ directory. Each sample'sREADME.md has instructions for running its sample.
| Sample | Source Code | Try it |
|---|---|---|
| App | source code | ![]() |
| Snippets | source code | ![]() |
TheCloud Debugger Node.js Client API Reference documentationalso contains samples.
Supported Node.js Versions
Our client libraries follow theNode.js release schedule.Libraries are compatible with all currentactive andmaintenance versions ofNode.js.If you are using an end-of-life version of Node.js, we recommend that you updateas soon as possible to an actively supported LTS version.
Google's client libraries support legacy versions of Node.js runtimes on abest-efforts basis with the following warnings:
- Legacy versions are not tested in continuous integration.
- Some security patches and features cannot be backported.
- Dependencies cannot be kept up-to-date.
Client libraries targeting some end-of-life versions of Node.js are available, andcan be installed through npmdist-tags.The dist-tags follow the naming conventionlegacy-(version).For example,npm install @google-cloud/debug-agent@legacy-8 installs client librariesfor versions compatible with Node.js 8.
Versioning
This library followsSemantic Versioning.
This library is considered to bestable. The code surface will not change in backwards-incompatible waysunless absolutely necessary (e.g. because of critical security issues) or withan extensive deprecation period. Issues and requests againststable librariesare addressed with the highest priority.
More Information:Google Cloud Platform Launch Stages
Contributing
Contributions welcome! See theContributing Guide.
Please note that thisREADME.md, thesamples/README.md,and a variety of configuration files in this repository (including.nycrc andtsconfig.json)are generated from a central template. To edit one of these files, make an editto its templates indirectory.
License
Apache Version 2.0
SeeLICENSE
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-10-30 UTC.
