# Debugging ## XDS cli architecture This tool is written in *Go*. ```bash | +-- bin/ # where xds-cli binary will be built | +-- cmd-XXX.go # GO sources of each sub-commands | +-- conf.d/ # Linux configuration and startup files (systemd user service) | +-- glide.yaml # Go package dependency file | +-- LICENSE # XDS cli license | +-- main.go # main entry point (Go) | +-- Makefile # makefile including | +-- README.md # readme | +-- scripts/ # hold various scripts used for installation | +-- vendor/ # temporary directory to hold Go dependencies packages ``` ## Debug Install first [Visual Studio Code](https://code.visualstudio.com/) and [Go plugin](https://marketplace.visualstudio.com/items?itemName=lukehoban.Go) (`ext install lukehoban.Go`) Visual Studio Code launcher settings can be found into `.vscode/launch.json`. Please follow instructions of xds-agent [debugging chapter](../2_xds-agent/4_debug.html#debug-xds-agent-go-code), knowing that you execute these same instructions in `xds-cli` repo, in other words by replacing *xds-agent* references by *xds-cli*.