Cloud Debugger: Node.js Client

release levelnpm version

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.

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

  1. Select or create a Cloud Platform project.
  2. Enable the Cloud Debugger API.
  3. 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-agent

Debugger 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:

  1. Click in the gutter (line number area) or enter a filename and line numberin the snapshot panel
  2. The debugger inserts a momentary breakpoint at the specified location inyour code in the running instance of your application.
  3. 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.f looks 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 apackage.jsonfile.

Samples

Samples are in thesamples/ directory. Each sample'sREADME.md has instructions for running its sample.

SampleSource CodeTry it
Appsource codeOpen in Cloud Shell
Snippetssource codeOpen in Cloud Shell

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.