# Debug Linux user space issues Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) The following figure illustrates the open-source tools, dumps, and logs that can be used to debug issues related to Linux user space applications. Figure : Resources to debug issues in the Linux user space Tools-dumps-logs-to debug-Linux Page-1 shape18-1 shape2-3 Open-source tools Open-source tools Open-source tools shape3-6 Dumps Dumps Dumps shape4-9 Logs Logs Logs shape10-12 ltrace ltrace ltrace shape11-15 GDB GDB GDB shape12-18 Valgrind Valgrind Valgrind shape13-21 gdbserver gdbserver gdbserver shape14-24 Coredump Coredump Coredump shape15-27 Syslogs Syslogs Syslogs shape16-30 Journalctl Journalctl Journalctl The supported open-source debug tools are enabled using the packagegroup-core-tools-debug.bbappend BitBake file. This BitBake file is available at: layers/meta-qcom-hwe/recipes-devtools/packagegroups/. The procedures to enable and use the open-source tools such as ltrace are described here. ## Debug using ltrace Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) By default, ltrace is enabled in the build. **Prerequisite** Set up SSH, follow the steps mentioned [here](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#use-ssh). **Procedure** To debug with ltrace, run the following commands using SSH: 1. Run the process status command: ps -efCopy to clipboard The list of all the running processes in the system is displayed. 339 rpc 0:00 /usr/sbin/rpcbind -w -f 345 root 0:00 /lib/systemd/systemd-journald 373 root 0:00 [kworker/3:6-mm_]Copy to clipboard 2. Identify the process id (PID) of the process that you want to debug. 3. Run the `ltrace` command: ltrace -p 345Copy to clipboard In this example, `345` is the PID. Sample output: journal_file_close(0x25e30170, -1, 0, 0 sockaddr_un_unlink(0x25e30170, -1, 0, 0 sd_journal_close(0x25e31c00, 1, 3, 0x409e70) = 0 sd_journal_close(0x25e31d50, 1, 0, 1) = 0 <... sockaddr_un_unlink resumed> ) = 1 <... journal_file_close resumed> ) = 1 journal_file_close(0x25e30170, -1, 0, 0 sockaddr_un_unlink(0x25e30170, -1, 0, 0 sd_event_now(15, 0x41ed20, 10, 64) = 10 openat64(2, 0x41ed20, 10, 64 clock_gettime(2, 0x41ed20, 10, 64) = 6Copy to clipboard For more information, see [https://man7.org/linux/man-pages/man1/ltrace.1.html](https://man7.org/linux/man-pages/man1/ltrace.1.html). ## Debug using Valgrind Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) The Valgrind tool can detect memory-related errors that are common in C and C++ programs. These errors cause crashes and unpredictable behavior such as memory leaks and memory corruptions. By default, the Valgrind tool is enabled in the build. **Prerequisite** Set up SSH, follow the steps mentioned [here](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#use-ssh). **Procedure** To use the Valgrind tool, do the following: 1. Push debug symbols to the device. For instructions, see [Configure debug symbols](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html#debug_symbols). 2. Run the Valgrind tool on the device. valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes /usr/bin/tqftpservCopy to clipboard Sample output: ==622== Memcheck, a memory error detector ==622== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==622== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info ==622== Command: /usr/bin/tqftpserv ==622== ^C==622== ==622== Process terminating with default action of signal 2 (SIGINT) ==622== at 0x498EF38: select (select.c:69) ==622== by 0x4013CB: ??? (in /usr/bin/tqftpserv) ==622== by 0x48DB1AF: (below main) (libc_start_call_main.h:58) ==622== ==622== FILE DESCRIPTORS: 4 open (3 std) at exit. ==622== Open pf-42 socket 3: ==622== at 0x49984CC: socket (syscall-template.S:120) ==622== by 0x4891293: qrtr_open (in /usr/lib/libqrtr.so.1.0) ==622== by 0x40129B: ??? (in /usr/bin/tqftpserv) ==622== by 0x48DB1AF: (below main) (libc_start_call_main.h:58) ==622== ==622== ==622== HEAP SUMMARY: ==622== in use at exit: 0 bytes in 0 blocks ==622== total heap usage: 0 allocs, 0 frees, 0 bytes allocated ==622== ==622== All heap blocks were freed -- no leaks are possible ==622== ==622== For lists of detected and suppressed errors, rerun with: -s ==622== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) ==622== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)Copy to clipboard For more information, see [https://valgrind.org/](https://valgrind.org/). ## Debug using GDB Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) By default, the GNU debugger (GDB) is not enabled in the build. To enable GDB, do the following on the host machine: 1. Navigate to the layers/meta-qcom-hwe/recipes-devtools/packagegroups/ directory and open the packagegroup-core-tools-debug.bbappend file. 2. Verify that the debug symbols are enabled. readelf --debug-dump=decodedline Copy to clipboard Or objdump --syms | grep -i ‘debug’Copy to clipboard If the debug symbols are not enabled, compile all the required executables or shared libraries with the `-g` CFLAG. To push debug symbols to the device, see [Configure debug symbols](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html#debug_symbols). 3. Modify the packagegroup-core-tools-debug.bbappend file to add `gdb` in the package list. Skip this step if the package name is already in the package list. 4. Recompile and flash the build on the device. To debug using GDB, run the following command on the device: gdb --pid 502Copy to clipboard Sample output: gdb: warning: Couldn't determine a path for the index cache directory. GNU gdb (GDB) 11.2 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "aarch64-qcom-linux". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word". Attaching to process 502 Reading symbols from /usr/bin/tqftpserv... (No debugging symbols found in /usr/bin/tqftpserv) Reading symbols from /usr/lib/libqrtr.so.1... (No debugging symbols found in /usr/lib/libqrtr.so.1) Reading symbols from /lib/libc.so.6... Reading symbols from /lib/.debug/libc.so.6... Reading symbols from /lib/ld-linux-aarch64.so.1... Reading symbols from /lib/.debug/ld-linux-aarch64.so.1... [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1". 0x0000ffffab00ef34 in __GI___select (nfds=4, readfds=0xffffc2ec14f8, writefds=0x0, exceptfds=0x0, timeout=0x0) at ../sysdeps/unix/sysv/linux/select.c:69 69 ../sysdeps/unix/sysv/linux/select.c: No such file or directory. (gdb) (gdb) (gdb) (gdb) Copy to clipboard The following are some of the commonly used GDB commands: Table : Common GDB commands | Command | Description | | --- | --- | | `(gdb) bt` | This command provides a backtrace of the current thread. | | `(gdb) info threads` | This command lists the IDs of currently known threads. | | `(gdb) thread 2` | This command switches to thread 2. | | `(gdb) where` | This command shows the current line number and the function that
you are in. | | `(gdb) thread apply all bt full` | This command provides a backtrace of all threads. | | `(gdb) info sharedlibrary` | This command lists the names of shared libraries used. | | `(gdb) info reg` | This command lists the CPU registers. | For more information, see [https://man7.org/linux/man-pages/man1/gdb.1.html](https://man7.org/linux/man-pages/man1/gdb.1.html). ## Collect core dump Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) A core dump is a memory snapshot of a user space process that can be used to analyze the cause of a process crash. The core dump is collected per Yocto Linux standard for all user space process crashes. By default, the core dump is enabled in the build. The generated core dump is saved on the device at /var/coredump. To verify the location of the core dump, run the following command: cat /proc/sys/kernel/core_patternCopy to clipboard Sample output: /var/coredump/%e.core The size of the core dump must be more than 0 (zero). To verify the size of the core dump, run the following command: ulimit -cCopy to clipboard The expected output is: unlimited. If the core dump is not enabled, use the following file to enable it: layers/meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom.bb. RDEPENDS:packagegroup-support-utils = "\ chrony \ libinput \ libinput-bin \ libnl \ libxml2 \ +++ procps \ "Copy to clipboard Note: While enabling core dump using this patch, you must rebuild and reflash the device. ### Using GDB on core dump To generate a core dump, forcibly kill a process. The following are the example commands: ps -ef | grep -i 'tqftp*'Copy to clipboard Sample output: root 1024 1 0 17:46 ? 00:00:00 /usr/bin/tqftpserv root 1047 934 0 17:47 pts/0 00:00:00 grep -i tqftp*Copy to clipboard kill -11 1024Copy to clipboard cd /var/coredumpCopy to clipboard lsCopy to clipboard Sample output: tqftpserv.core The tqftpserv.core is the core dump file. If the debug symbols are already pushed to the device, run the following commands to use the GDB tool on the core dump: cd /usr/bin/Copy to clipboard gdb tqftpserv /var/coredump/tqftpserv.coreCopy to clipboard Sample output: gdb: warning: Couldn't determine a path for the index cache directory. GNU gdb (GDB) 11.2 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. Type "apropos word" to search for commands related to "word"... Reading symbols from tqftpserv... warning: exec file is newer than core file. [New LWP 1024] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1". Core was generated by `/usr/bin/tqftpserv'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000ffff8629ef34 in __GI___select (nfds=4, readfds=readfds@entry=0xffffd04ccb28, writefds=writefds@entry=0x0, --Type for more, q to quit, c to continue without paging-- exceptfds=exceptfds@entry=0x0, timeout=timeout@entry=0x0) at ../sysdeps/unix/sysv/linux/select.c:69 69 ../sysdeps/unix/sysv/linux/select.c: No such file or directory. (gdb) bt #0 0x0000ffff8629ef34 in __GI___select (nfds=4, readfds=readfds@entry=0xffffd04ccb28, writefds=writefds@entry=0x0, exceptfds=exceptfds@entry=0x0, timeout=timeout@entry=0x0) at ../sysdeps/unix/sysv/linux/select.c:69 #1 0x00000000004013cc in main (argc=, argv=) at tqftpserv.c:552 Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb)Copy to clipboard For more information, see [https://man7.org/linux/man-pages/man5/core.5.html](https://man7.org/linux/man-pages/man5/core.5.html). ## Debug using gdbserver Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) The gdbserver utility allows you to run the GDB tool remotely from the host machine. This utility is helpful in debugging issues when there is a storage constraint for debug symbols on the device. ### Enable gdbserver on device By default, gdbserver is not enabled in the build. To enable the gdbserver, do the following: 1. Navigate to the layers/meta-qcom-hwe/recipes-devtools/packagegroups/ directory and open the packagegroup-core-tools-debug.bbappend file. 2. Modify the packagegroup-core-tools-debug.bbappend file to add the `gdbserver` in the package list. 3. Recompile and flash the build on the device. ### Configure gdbserver on device To configure the gdbserver on the device, run the following commands using SSH: mount -o rw,remount /Copy to clipboard gdbserver :8888 Copy to clipboard For example: gdbserver :8888 /usr/bin/tqftpservCopy to clipboard Sample output: ![](data:image/png;base64,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) The sample output indicates that the device is ready to communicate with the host. ### Configure gdb on a Linux host machine To configure the gdb tool on a Linux host machine, do the following: 1. Install gdb and gdb-multiarch tools. sudo apt-get install gdb gdb-multiarchCopy to clipboard 2. Create a debug directory to capture all the symbols from the build. mkdir test_gdbserverCopy to clipboard 3. Copy the rootfs having the debug symbols from the build location to the debug directory test\_gdbserver. cp -f /build-qcom-wayland/tmp-glibc/deploy/images//qcom-multimedia-image--dbg.rootfs.tar.bz2 test_gdbserverCopy to clipboard cd test_gdbserverCopy to clipboard tar -xvf qcom-multimedia-image--dbg.rootfs.tar.bz2Copy to clipboard Note: While running these commands, replace `` with the appropriate value as mentioned in the following table. | Chipset | Value | | --- | --- | | QCS6490 | `qcm6490` | | QCS5430 | `qcm6490` | | QCS9075 | `qcs9100` | | | | The test\_gdbserver is now ready with the symbols. 4. Start the gdb-multiarch tool using the `gdb-multiarch ` command. For example, gdb-multiarch test_gdbserver/usr/bin/tqftpservCopy to clipboard The gdb-multiarch tool starts on the gdb console. 5. Run the following commands on the gdb console: set gnutarget elf64-littleaarch64Copy to clipboard Set sysroot <path-to-new-debug-directory>. set sysroot /test_gdbserverCopy to clipboard target remote :8888Copy to clipboard btCopy to clipboard bCopy to clipboard info threadsCopy to clipboard The following screenshots show the sample output during the configuration process: ![](data:image/png;base64,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) $ gdb-multiarch /test_gdbserver/usr/bin/.debug/tqftpserv GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.2) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/.Copy to clipboard Reading symbols from /test_gdbserver/usr/bin/.debug/tqftpserv... (gdb) set gnutarget elf64-littleaarch64 (gdb) set sysroot /test_gdbserver (gdb) target remote 10.92.168.78:8888 Remote debugging using 10.92.168.78:8888 warning: while parsing target description (at line 71): Vector "v8bf16" references undefined type "bfloat16" warning: Could not load XML target description; ignoring warning: Unable to find dynamic linker breakpoint function. Reading symbols from /test_gdbserver/lib/ld-linux-aarch64.so.1... (no debugging symbols found)...done. Reading symbols from /test_gdbserver/lib/.debug/ld-linux-aarch64.so.1... Loaded symbols for /test_gdbserver/lib/.debug/ld-linux-aarch64.so.1 warning: no loadable sections found in added symbol-file system-supplied DSO at 0xfffff7ffb000 0x0000fffff7fda870 in _start () from /test_gdbserver/lib/.debug/ld-linux-aarch64.so.1 (gdb) bt #0 0x0000fffff7fda870 in _start () from /test_gdbserver/lib/.debug/ld-linux-aarch64.so.1 #1 0x0000000000000000 in ?? () (gdb) b Breakpoint 1 at 0xfffff7fda870 (gdb) info threads Id Target Id Frame * 1 Thread 3212 0x0000fffff7fda870 in _start () (gdb)Copy to clipboard For more information, see [https://man7.org/linux/man-pages/man1/gdbserver.1.html](https://man7.org/linux/man-pages/man1/gdbserver.1.html). ## Debug with user space logs Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) The following logs can be used to debug issues in the user space using SSH on the device: ### Syslogs To verify if syslogs are generated, run the following command: cat /var/log/user.logCopy to clipboard If the syslogs are not generated, run the following command: tail -f /var/log/messagesCopy to clipboard Sample log: Apr 28 17:42:30 qcm6490 daemon.info avahi-daemon[516]: No service file found in /etc/avahi/services. Apr 28 17:42:30 qcm6490 daemon.info avahi-daemon[516]: Joining mDNS multicast group on interface lo.IPv6 with address ::1. Apr 28 17:42:30 qcm6490 daemon.info avahi-daemon[516]: New relevant interface lo.IPv6 for mDNS. Apr 28 17:42:30 qcm6490 daemon.info avahi-daemon[516]: Joining mDNS multicast group on interface lo.IPv4 with address 127.0.0.1. Apr 28 17:42:30 qcm6490 daemon.info avahi-daemon[516]: New relevant interface lo.IPv4 for mDNS.Copy to clipboard ### journalctl logs To generate the systemd journalctl logs, run the following command: journalctl -efCopy to clipboard Sample log: Apr 28 17:42:28 qcm6490 kernel: spmi-temp-alarm c440000.spmi:pmic@2:temp-alarm@2400: error -ENXIO: IRQ index 0 not found Apr 28 17:42:28 qcm6490 kernel: qcom-spmi-adc5 c440000.spmi:pmic@2:adc@3100: Invalid dig version read -19 Apr 28 17:42:28 qcm6490 kernel: qcom-spmi-adc5 c440000.spmi:pmic@2:adc@3100: error -ENODEV: adc get dt data failed Apr 28 17:42:28 qcm6490 kernel: qcom-spmi-adc5 c440000.spmi:pmic@0:adc@3100: error -EINVAL: adc get dt data failed Apr 28 17:42:28 qcm6490 kernel: qcom-spmi-adc5: probe of c440000.spmi:pmic@0:adc@3100 failed with error -22 Apr 28 17:42:28 qcm6490 kernel: dwc3 a600000.usb: Adding to iommu group Apr 28 17:42:29 qcm6490 systemd[1]: First Boot Complete was skipped because of a failed condition check (ConditionFirstBoot=yes). Apr 28 17:42:29 qcm6490 systemd[1]: Reached target Hardware activated USB gadget.Copy to clipboard ## Configure debug symbols Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) Debug symbols are required to parse core dumps. Yocto Linux, by design, compiles a package and splits it into multiple packages. For example, if hello\_0.1.bb file compiles hello.cpp file, several packages are generated. The following table lists the packages that are relevant to the core dump. Table : Packages required for parsing core dump | Package | Description | | --- | --- | | hello\_0.1-r0\_armv8-2a.ipk | This package contains a stripped executable. It is the only
package that is included in the image for the device. | | hello-dbg\_0.1-r0\_armv8-2a.ipk | This package contains the debug symbols and is never packed in
the image.
The debug package (-dbg) increases the image size
significantly, which causes problems in including this package
in the image. Also, apart from debugging, this package has no
runtime value. Therefore, as a strategy, Yocto does not include
any -dbg package in the image. | | hello-dev\_0.1-r0\_armv8-2a.ipk | This package contains the exported headers and libraries that the
dependent modules use during compilation. | According to Yocto Linux standards, the debug symbols are stored at the build location path: tmp-glibc/deploy/ipk/armv8-2a. For example, tqftpserv-dbg\_0.0+0+de42697a24-r0\_armv8-2a.ipk package contains the debug symbols for the /usr/bin/tqftpserv directory. To push the debug symbols to the device, do the following using SSH: 1. Remount the rootfs. mount -o rw,remount /Copy to clipboard 2. Using the `scp` command, push the debug symbols (tqftpserv-dbg\_0.0+0+de42697a24-r0\_armv8-2a.ipk) to the device at any available partition such as /data/. chmod 777 /data/tqftpserv-dbg_0.0+0+de42697a24-r0_armv8-2a.ipkCopy to clipboard cd dataCopy to clipboard 3. Install debug symbols on the device. opkg install --nodeps tqftpserv-dbg_0.0+0+de42697a24-r0_armv8-2a.ipkCopy to clipboard After pushing the debug symbols to the device, the symbols are saved at the path of the executable directory in the .debug directory. For example, for /usr/bin/tqftpserv directory, the debug symbols are saved at /usr/bin/.debug directory. To identify the debug symbols that are available on the device, run the following commands: cd /usr/bin/.debugCopy to clipboard lsCopy to clipboard Sample output: gencat getent locale pcprofiledump sprof zdump getconf iconv makedb pldd tqftpservCopy to clipboard ## Reboot commands Source: [https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70015-12/topic/using_open_source_debug_tools.html) The user space reboot framework triggers the reboot using the kernel driver (`drivers/firmware/psci/psci.c`). The following reboot commands can be run using SSH: Table : Reboot commands | Command | Description | | --- | --- | | `reboot edl` | This command reboots the device to the Emergency download (EDL)
mode. For more information on EDL mode, see [Qualcomm Linux Build
Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/flash_images.html#move-to-edl-mode). | | `reboot bootloader` | This command reboots the device to Fastboot mode. For more
information on Fastboot mode, see [Qualcomm Linux Boot
Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-4/fastboot.html). | The following are the optional parameters available to use with the `reboot` command: ![](data:image/png;base64,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) Last Published: Oct 14, 2024 [Previous Topic Overview](https://docs.qualcomm.com/bundle/publicresource/80-70015-12/topics/Debug-overview.md) [Next Topic Debug Linux kernel space issues](https://docs.qualcomm.com/bundle/publicresource/80-70015-12/topics/debugging_linux_kernel.md)