# Using the XDS Command Line You can debug your AGL application using the XDS command line in XDS remote mode or in native mode. ## XDS Remote Mode XDS remote debugging is the default mode for using XDS to debug your application. Follow this procedure to use XDS remotely to debug your application: 1. Declare to the `xds-server` the project you want to debug. The project can also have been built using XDS. See the "[Create your first AGL application](../../../#create-your-first-agl-application)" section for more details. 2. Be sure you have the XDS agent and XDS server chain in place. You can find more information on this chain in the "[Overview](../../../#xds-overview)" section. 3. Determine the unique project and sdk ID values. Two methods exist for you to locate these ID values: - Use the "Project" page of XDS dashboard. - Use the `xds-gdb --list` command from the XDS command line. This command returns the list of all existing project and SDK IDs: ```bash xds-gdb --list ``` 4. Define the `XDS_PROJECT_ID` and `XDS_SDK_ID` variables. Defining these variables refers the project to the `xds-server`. Once you refer the project, you are ready to use `xds-gdb` (e.g. cross debug your project). 5. Build and debug the project. **Example** Following is an example that builds and debugs a project based on a CMakefile and the [cmake-apps-module](https://git.automotivelinux.org/src/cmake-apps-module/): ```bash # Go into your project directory (e.g. helloworld-native-application) cd ~/xds-workspace # Clone the project files into your local directory. git clone https://github.com/iotbzh/helloworld-native-application.git # Go to the local project's directory. cd helloworld-service # Declare your project on xds-server # For now, you can only do this step using the XDS Dashboard. # See the "Build Using the XDS Dashboard" topic in the "Create Your # First Application" section. # Define XDS configuration variables by creating a "xds-config.env" file. cat <./xds-config.env #optional if not default value: XDS_AGENT_URL=http://localhost:8800 XDS_PROJECT_ID=IW7B4EE-DBY4Z74_myProject XDS_SDK_ID=poky-agl_aarch64_4.0.1 EOF # Tell the xds-cli and xds-gdb what configuration file to use. export XDS_CONFIG=../xds-gen3.conf # Create a new build directory. mkdir build && cd build # Start remote cross build xds-cli exec -- cmake -DRSYNC_TARGET=root@myTarget .. xds-cli exec -- make xds-cli exec -- make remote-target-populate # Start debugging xds-gdb -x target/gdb-on-root@myTarget.ini ``` **NOTE:** The [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) project is an AGL project based on the [cmake-apps-module](https://git.automotivelinux.org/src/cmake-apps-module/). For information on installing this module, see the "[Installing the CMAKE Templates](../../cmakeafbtemplates/dev_guide/installing-cmake.html))" section. The CMake templates, used to develop applications with the AGL Application Framework, automatically generates Makefile rules (e.g. `remote-target-populate`) or scripts (e.g. `build/target/*`). For more info about the CMake templates, see the "[Using the Cmake Applications Module](../../../#using-the-cmake-applications-module). ## Native debugging Native debugging using GDB directly. To enable native debugging mode, set the `XDS_NATIVE_GDB` variable. For information on debugging with GDB, see the "[Debugging with GDB](https://www.sourceware.org/gdb/onlinedocs/gdb.html#index-_002d_002dcommand)" section.