# 调试 Linux 用户空间问题

Qualcomm Linux 支持各种开源工具、dump 和日志进行调试，如下图所示：

- 开源工具：ltrace、Valgrind、GDB 和 gdbserver 有助于跟踪和内存分析。
- dump：coredump 有助于崩溃诊断。
- 日志：syslogs 和 journalctl 支持系统监控和问题跟踪。

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export Tools-dumps-logs-to-debug-Linux-userspace.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.57891in" height="2.54063in" viewbox="0 0 617.682 182.925" xml:space="preserve" color-interpolation-filters="sRGB" class="st9" aria-label="用于排查 Linux 用户空间应用问题的开源工具、系统 dump 和日志文件的可视化表示。"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st2 { fill: #ffffff; stroke: #7c8aa3; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st3 { fill: none; stroke: none; stroke-linecap: butt; stroke-width: 1.5 }
.svg-1 .st4 { fill: #000000; font-family: SimHei; font-size: 1.24999em; font-weight: bold }
.svg-1 .st5 { fill: #000000; font-family: Roboto; font-size: 1.16666em; font-weight: bold }
.svg-1 .st6 { fill: #d2d7e1; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st7 { fill: #000000; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st8 { fill: #000000; font-family: SimHei; font-size: 1.24999em }
.svg-1 .st9 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9.00001" v:shadowoffsety="-9.00001"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(0.750001,-0.750001)">		<title>Sheet.1</title>		<path d="M0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L613.3 182.93 A2.88007 2.88007 -180 0 0 616.18 180.05 L616.18					 4.38 A2.88007 2.88007 -180 0 0 613.3 1.5 L2.88 1.5 A2.88007 2.88007 -180 0 0 -0 4.38 L0 180.05 Z" class="st1"></path>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(12.0138,-13.6826)">		<title>Sheet.2</title>		<path d="M0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L273 182.93 A2.88007 2.88007 -180 0 0 275.88 180.05 L275.88					 30.25 A2.88007 2.88007 -180 0 0 273 27.37 L2.88 27.37 A2.88007 2.88007 -180 0 0 0 30.25 L0 180.05 Z" class="st2"></path>	</g>	<g id="shape3-5" v:mid="3" v:groupcontext="shape" transform="translate(90.0692,-139.855)">		<title>Sheet.3</title>		<desc>Open-source tools</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="63.1813" cy="174.877" width="126.38" height="16.0946"></v:textrect>		<path d="M0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L123.48 182.93 A2.88007 2.88007 -180 0 0 126.36 180.05 L126.36					 169.71 A2.88007 2.88007 -180 0 0 123.48 166.83 L2.88 166.83 A2.88007 2.88007 -180 0 0 0 169.71 L0 180.05					 Z" class="st3"></path>		<text x="33.06" y="179.38" class="st4" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>开源工具</text>		</g>	<g id="shape4-8" v:mid="4" v:groupcontext="shape" transform="translate(300.066,-13.6826)">		<title>Sheet.4</title>		<path d="M-0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L143.7 182.93 A2.88007 2.88007 -180 0 0 146.58 180.05 L146.58					 30.25 A2.88007 2.88007 -180 0 0 143.7 27.37 L2.88 27.37 A2.88007 2.88007 -180 0 0 -0 30.25 L0 180.05 Z" class="st2"></path>	</g>	<g id="shape5-10" v:mid="5" v:groupcontext="shape" transform="translate(350.671,-139.855)">		<title>Sheet.5</title>		<desc>Dumps</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="24.275" cy="174.877" width="48.57" height="16.0946"></v:textrect>		<path d="M-0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L45.67 182.93 A2.88007 2.88007 -180 0 0 48.55 180.05 L48.55					 169.71 A2.88007 2.88007 -180 0 0 45.67 166.83 L2.88 166.83 A2.88007 2.88007 -180 0 0 0 169.71 L0 180.05					 Z" class="st3"></path>		<text x="2.21" y="179.08" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Dumps</text>		</g>	<g id="shape6-13" v:mid="6" v:groupcontext="shape" transform="translate(457.421,-13.6826)">		<title>Sheet.6</title>		<path d="M0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L143.7 182.93 A2.88007 2.88007 -180 0 0 146.58 180.05 L146.58					 30.25 A2.88007 2.88007 -180 0 0 143.7 27.37 L2.88 27.37 A2.88007 2.88007 -180 0 0 -0 30.25 L0 180.05 Z" class="st2"></path>	</g>	<g id="shape7-15" v:mid="7" v:groupcontext="shape" transform="translate(514.284,-139.855)">		<title>Sheet.7</title>		<desc>Logs</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="16.8351" cy="174.877" width="33.69" height="16.0946"></v:textrect>		<path d="M0 180.05 A2.88007 2.88007 -180 0 0 2.88 182.93 L30.79 182.93 A2.88007 2.88007 -180 0 0 33.67 180.05 L33.67					 169.71 A2.88007 2.88007 -180 0 0 30.79 166.83 L2.88 166.83 A2.88007 2.88007 -180 0 0 -0 169.71 L0 180.05					 Z" class="st3"></path>		<text x="1.78" y="179.38" class="st4" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>日志</text>		</g>	<g id="shape8-18" v:mid="8" v:groupcontext="shape" transform="translate(24.1558,-83.7387)">		<title>Sheet.8</title>		<desc>Itrace</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 -0 143.81 L0 178.93 Z" class="st6"></path>		<text x="42.22" y="165.57" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Itrace</text>		</g>	<g id="shape9-21" v:mid="9" v:groupcontext="shape" transform="translate(156.041,-83.7387)">		<title>Sheet.9</title>		<desc>Valgrind</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 -0 143.81 L0 178.93 Z" class="st6"></path>		<text x="34.19" y="165.57" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Valgrind</text>		</g>	<g id="shape10-24" v:mid="10" v:groupcontext="shape" transform="translate(156.041,-29.8499)">		<title>Sheet.10</title>		<desc>gdbserver</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 0 143.81 L0 178.93 Z" class="st6"></path>		<text x="29" y="165.57" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>gdbserver</text>		</g>	<g id="shape11-27" v:mid="11" v:groupcontext="shape" transform="translate(24.1558,-29.8499)">		<title>Sheet.11</title>		<desc>GDB</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 0 143.81 L0 178.93 Z" class="st6"></path>		<text x="46.24" y="165.57" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GDB</text>		</g>	<g id="shape12-30" v:mid="12" v:groupcontext="shape" transform="translate(313.793,-83.7387)">		<title>Sheet.12</title>		<desc>Coredump</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 -0 143.81 L0 178.93 Z" class="st6"></path>		<text x="27.46" y="165.57" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Coredump</text>		</g>	<g id="shape13-33" v:mid="13" v:groupcontext="shape" transform="translate(470.354,-83.7387)">		<title>Sheet.13</title>		<desc>Syslogs</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 -0 143.81 L0 178.93 Z" class="st6"></path>		<text x="29.96" y="165.87" class="st8" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>系统日志</text>		</g>	<g id="shape14-36" v:mid="14" v:groupcontext="shape" transform="translate(470.751,-29.8499)">		<title>Sheet.14</title>		<desc>Journalctl</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.9584" cy="161.37" width="119.93" height="43.111"></v:textrect>		<path d="M0 178.93 A4.0001 4.0001 -180 0 0 4 182.93 L115.92 182.93 A4.0001 4.0001 -180 0 0 119.92 178.93 L119.92 143.81					 A4.0001 4.0001 -180 0 0 115.92 139.81 L4 139.81 A4.0001 4.0001 -180 0 0 0 143.81 L0 178.93 Z" class="st6"></path>		<text x="28.86" y="165.57" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Journalctl</text>		</g></g>
</svg>

**图：用于调试 Linux 用户空间中问题的资源**

使用 `packagegroup-core-tools-debug.bbappend` BitBake 文件启用受支持的开源调试工具。可在 `layers/meta-qcom-hwe/recipes-devtools/packagegroups/` 目录中找到此 BitBake 文件。以下部分介绍了启用和使用开源工具（如 ltrace）的过程。

## 使用 ltrace 调试

默认情况下，编译版本包含 ltrace。

**前提条件**

设置 SSH。有关说明，请参阅[使用 SSH 登录](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/how_to.html#use-ssh)。

**步骤**

请使用 SSH 运行以下命令，以便使用 ltrace 进行调试：

1. 运行进程状态命令：

ps -ef
        Copy to clipboard

    示例输出：

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\_]
2. 标识待调试进程的进程 ID (PID)。
3. 运行 `ltrace` 命令：

ltrace -p 345
        Copy to clipboard

    在此示例中，`345` 为 PID。

    示例输出：

journal\_file\_close(0x25e30170, -1, 0, 0 &lt;unfinished ...&gt;

sockaddr\_un\_unlink(0x25e30170, -1, 0, 0

&lt;unfinished ...&gt;

sd\_journal\_close(0x25e31c00, 1, 3, 0x409e70) = 0

sd\_journal\_close(0x25e31d50, 1, 0, 1) = 0

&lt;... sockaddr\_un\_unlink resumed&gt; ) = 1

&lt;... journal\_file\_close resumed&gt; ) = 1

journal\_file\_close(0x25e30170, -1, 0, 0 &lt;unfinished ...&gt;

sockaddr\_un\_unlink(0x25e30170, -1, 0, 0 &lt;unfinished ...&gt;

sd\_event\_now(15, 0x41ed20, 10, 64) = 10

openat64(2, 0x41ed20, 10, 64 &lt;unfinished ...&gt;

clock\_gettime(2, 0x41ed20, 10, 64) = 6

有关更多信息，请参阅 [Linux manual page](https://man7.org/linux/man-pages/man1/ltrace.1.html)。

## 使用 Valgrind 调试

Valgrind 工具可帮助检测 C 和 C++ 程序中常见的内存相关错误。这些错误会导致崩溃和不可预测的行为，例如内存泄漏和内存损坏。默认情况下，编译版本包含 Valgrind 工具。

**前提条件**

设置 SSH，有关说明请参阅[使用 SSH 登录](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/how_to.html#use-ssh)。

**步骤**

要使用 Valgrind 工具，请执行以下操作：

1. 将调试符号推送至设备。相关说明，可参见[配置调试符号](https://docs.qualcomm.com/doc/80-70022-12SC/topic/using_open_source_debug_tools.html#debug-symbols)。
2. 在设备上运行以下 Valgrind 工具命令：

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes /usr/bin/tqftpserv
        Copy to clipboard

    示例输出：

==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)

有关更多信息，请参阅 [Valgrind](https://valgrind.org/)。

## 使用 GDB 调试

默认情况下，编译版本不会启用 GNU 调试器 (GDB)。请在 Linux 主机上执行以下操作，以便启用 GDB：

1. 转至 `layers/meta-qcom-hwe/recipes-devtools/packagegroups/` 目录并打开 `packagegroup-core-tools-debug.bbappend` 文件。
2. 修改 `packagegroup-core-tools-debug.bbappend` 文件，在包列表中添加 `gdb`。如果软件包名称在软件包列表中存在，则跳过此步骤。
3. 请确保编译版本包含调试符号。

readelf --debug-dump=decodedline <BIN_FILE>
        Copy to clipboard

    或者

objdump --syms <BIN_NAME> | grep -i ‘debug’
        Copy to clipboard

    如果未启用调试符号，请使用 `-g` CFLAG 编译所有必需的可执行文件或共享库。要将调试符号推送到设备，请参阅[配置调试符号](https://docs.qualcomm.com/doc/80-70022-12SC/topic/using_open_source_debug_tools.html#debug-symbols)。
4. 在设备上重新编译并刷写版本。

    请在设备上运行以下命令，以便使用 GDB 进行调试：

gdb --pid 502
        Copy to clipboard

示例输出：

> 
> 
> 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 &lt;[http://gnu.org/licenses/gpl.html](http://gnu.org/licenses/gpl.html)&gt;
> 
> 
> 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:
> 
> 
> &lt;[https://www.gnu.org/software/gdb/bugs/](https://www.gnu.org/software/gdb/bugs/)&gt;.
> 
> 
> Find the GDB manual and other documentation resources online at:
> 
> 
> &lt;[http://www.gnu.org/software/gdb/documentation/](http://www.gnu.org/software/gdb/documentation/)&gt;.
> 
> 
> 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)

下表列出了常用的 GDB 命令。

表：常用 GDB 命令

| 命令 | 说明 |
| --- | --- |
| `(gdb) bt` | 提供当前线程的回溯。 |
| `(gdb) info threads` | 列出当前已知线程的 ID。 |
| `(gdb) thread 2` | 切换到线程 2。 |
| `(gdb) where` | 显示当前行号和您所在的函数。 |
| `(gdb) thread apply all bt full` | 提供所有线程的回溯。 |
| `(gdb) info sharedlibrary` | 列出所使用的共享库的名称。 |
| `(gdb) info reg` | 列出 CPU 寄存器。 |

有关更多信息，请参阅 [Linux manual page](https://man7.org/linux/man-pages/man1/gdb.1.html)。

## 收集 coredump

coredump 是用户空间进程的内存拍照，可用于分析进程崩溃的原因。

系统根据 Yocto Linux 标准为所有用户空间进程崩溃收集 coredump。默认情况下，编译版本允许 coredump。设备将生成的 coredump 保存在 `/var/coredump` 目录中。

要验证 coredump 的位置，请运行以下命令：

cat /proc/sys/kernel/core_pattern
    Copy to clipboard

示例输出：

/var/coredump/%e.core

coredump 的大小必须大于 0（零）。要验证 coredump 的大小，请运行以下命令：

ulimit -c
    Copy to clipboard

示例输出：

unlimited

如果未启用 coredump，请使用以下文件启用：

`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

使用此补丁启用 coredump，然后重新构建并刷写设备。

### 使用 GDB 分析 coredump

可通过强制终止进程来生成 coredump。因此，请运行以下命令：

ps -ef | grep -i 'tqftp*'
    Copy to clipboard

示例输出：

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\*

kill -11 1024
    Copy to clipboard

cd /var/coredump
    Copy to clipboard

ls
    Copy to clipboard

示例输出：

tqftpserv.core

`tqftpserv.core` 为 coredump 文件。

如果设备已包含调试符号，请运行以下命令在 coredump 上使用 GDB 工具：

cd /usr/bin/
    Copy to clipboard

gdb tqftpserv /var/coredump/tqftpserv.core
    Copy to clipboard

示例输出：

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 &lt;[http://gnu.org/licenses/gpl.html](http://gnu.org/licenses/gpl.html)&gt;

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 [`](https://docs.qualcomm.com/doc/80-70022-12SC/topic/using_open_source_debug_tools.html#id4)/usr/bin/tqftpserv'.

Program terminated with signal SIGSEGV, Segmentation fault.

#0  0x0000ffff8629ef34 in \_\_GI\_\_\_select (nfds=4,

[readfds=readfds@entry=0xffffd04ccb28](mailto:readfds=readfds%40entry=0xffffd04ccb28), [writefds=writefds@entry=0x0](mailto:writefds=writefds%40entry=0x0),

--Type &lt;RET&gt; for more, q to quit, c to continue without paging--

[exceptfds=exceptfds@entry=0x0](mailto:exceptfds=exceptfds%40entry=0x0), [timeout=timeout@entry=0x0](mailto:timeout=timeout%40entry=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](mailto:readfds=readfds%40entry=0xffffd04ccb28), [writefds=writefds@entry=0x0](mailto:writefds=writefds%40entry=0x0),

[exceptfds=exceptfds@entry=0x0](mailto:exceptfds=exceptfds%40entry=0x0), [timeout=timeout@entry=0x0](mailto:timeout=timeout%40entry=0x0))

at ../sysdeps/unix/sysv/linux/select.c:69

#1  0x00000000004013cc in main (argc=&lt;optimized out&gt;, argv=&lt;optimized out&gt;)

at tqftpserv.c:552

Backtrace stopped: previous frame identical to this frame (corrupt stack?)

(gdb)

有关更多信息，请参阅 [Linux manual page](https://man7.org/linux/man-pages/man5/core.5.html)。

## 使用 gdbserver 调试

gdbserver 实用工具允许用户从 Linux 主机远程运行 GDB 工具。当设备上的调试符号存在存储限制时，此实用工具对于调试非常有帮助。

### 在设备上启用 gdbserver

默认情况下，编译版本不会启用 gdbserver。要启用 gdbserver，可执行以下操作：

1. 转至 `layers/meta-qcom-hwe/recipes-devtools/packagegroups/` 目录并打开 `packagegroup-core-tools-debug.bbappend` 文件。
2. 修改 `packagegroup-core-tools-debug.bbappend` 文件，将 `gdbserver` 添加到包列表中。
3. 在设备上重新编译并刷写版本。

### 在设备上配置 gdbserver

要在设备上配置 gdbserver，可使用 SSH 运行以下命令：

mount -o rw,remount /
    Copy to clipboard

gdbserver :8888 <path-to-binary>
    Copy to clipboard

例如：

gdbserver :8888 /usr/bin/tqftpserv
    Copy to clipboard

示例输出：

![../../_images/gdbserver-configuration-on-device.png](data:image/png;base64,UklGRroyAABXRUJQVlA4TK0yAAAvCwMmABUH47aNHFn9l+2Z2QubXxExAcpRFfWWNvoTl+oMYMoJ6NqjRAAi7U1qqTpIXutswfulTB/mK5hQz0fwJuU+Ude1yNUCKLe2tUevYGiYAzQ0yhEaGhp+8IOGhoYeRoaGHkaGhoaGhoaxc845Lc0qrb3u+b677/4TLCim/pA6C4oVrAfo23nCYgUFq7OYxugkWC9gKDY/o5pMUExQsGD1Oyw4FbZt24aYdE+Fbdu2ISbds/+yIMmO22YgMWXVkX0L8BTAh2+q8v/LbhtDw0DBQMFAQ8NAQUPDwMDAwsBAw8DuFTQ0FBQUNDQUNMv0nP89fy3daGlyNB5p1FE3z2FFK8t2PbcT7ifoll3exg+grGLdNIqWrlmZupr9Z6rxVRTh7i08c243TzTZ/QBdWFzbGlrga3cYhsPhcDgchmEYhuF1ge1vH81uWAwWi8XhsLj/+2EwGAwWDw+Hw+Hh4eHh8LB4eHhn/ZfESJIiSZZViw2xUIMH+f4PaCv/Fv8k9d+kVcq/xz/NP8V//yj1n6dNTq3/BszMpv7if/kv/wn+BTiO+nf4Rf3X4f/yl/8lf0Pl3434+///vf//1//1X2/tBfL+2b3/3nv/6//6T+/dCPjH7/1H//Q5H5L3r7X2j56J4b//xS8qNO2X/339FwEKfP3vf/nvAg3/xS/+GfiJ8q/wy//rv2alfLAS/jXY//KfQyPkL/I7+P1UfqKkX/6zMPO/TFsoqhHACSD+01v+Jr8P+Ru0Uv8kfxASkd/Dn0HP3+KvQb+Xv07DLVR+Ch4f4W9DOPJPwI6/zbKSCP0VHrg/h4j8af4OD+yfQkT+PI6ZFxLx6xNa/xJIiV9QKu1/GT60do3dn+UpuT2aB38BNO2aUi8i+8EMxP9AK5Pg9AQSzvPsL30Lo51wBEJRtgPnjzVmXL5dVsLcIS2cTpHDYy5cDPpD5Ey8CHYZn3jYA/tX4BYx0ytWny1IBKu14VZupPnslx9muOtRUgP113C3gdczTfQkadTVmejMYlpaehquC0qdhiuCheTrGipYB4brGmEzHa5ha2K4QBkbSZXTNZQHC9SZoKZhjZHBvNVOhMsup1v93vO8+zX1shcn0tUto2ll3MVybSJ2CwhnbA0f4vfIfEC7FLeuBJ28rqEoxJ0ccwniB2gNFJ+YV5QKtxNGDBA6AkmuoQywboGYwersvRtJCdjymadH3Pc5NQiijA+u/jzPflMW0bVu1uEf0+49ksdePA9ExJOZV48oXhoIEY/EbMOOu1zMPDZSzMbJoyDib8Hz/d4ntvi+mIdGeld5Qyiqi/mFmbYszQLnughY0FgPjM0i2MnT+sweJHHB98jJv2fmUXbcm/AJRmgAg4StgWD4vL4RrlTx3agz8DFlWR5cuyd8z0AuNqWm8yBlMaMn/M1czAZImh1zMTvusG4bncFyFRh04OuNFtjyqX92pcw4cxGiMQiNzGEXkX2FLyP2roUCSZc0OjsrniJDL3Ly5MWMhgAyXyKHqxljKUYuHknC6MVYNkQylLLxLVLYEi48iMwLSZcsEdFYisWcIcKHmIwjM7sTAxn4MgWwAeAFs6epfbVFKcrJkzN48iJ+KhdmXfgAgz0/gHZ1iVPpxTcMQnkkMVvDhVTBTln8WmwjSo5LiFIV8R6+bIOEMlXmQHJGkZk3g1eZPI18iRwLSajJE8nSBL0gPSC5P/EElMvZYnkSWdh6PJmrbYpjto/Si/RtfOAtyWPvUoeBR6SVJ/iWkPhESpbET24rlU/0JV2CpWFwzKylw2zTKZRq8+QnSgcjTQcRUbDgCIiIomN3EhE4VtxCI+pIbbtRg4PTE1Fml8rmnBp+wym5MvOh2FXB+gZBv/EouDJz8Tg6hi87Bjpz4ohk2S5Ct7VV+3LAw7kZDU8iZnPblnhGY1MUsQ1Lo+4HAWkOIfu8wY8lg/GZVt89RyH6oxCRnEIGB+YZuwbLFXIorbh0oTNmThzFG+8B2GvOczd4WnQ0ogjlAV78DC4pbZ6W20vmjSSXkzByRDpLFrIui18XwqPtX6GVATdzxpN5CCF4M7qkCZ85BexZXX0W5fs0JJ5EJma3oNmYtR+bMTB0m1ekjZlb6JlPzI7XEDpvzsQ9sFfwAUZmzS5uIxw/8ZTJ8urRc3kGt5bJ1YDhObZM1BnyixDJnGqAjHwri+pmoZSmKfFAOPOJ5Pu+P+yDEzJ5HOFa0gmZvu/nBPZOcVTGkNyBxAVl4ALegmbjKLg5krmxK3PLvnIHjhaUyJt5sE2FaxAsrDU7olf3L9X1oi6c+nUrwBKOrKJsqLJ1pzTcQqWdLqUDjUvT5PikPfKB0N764NJcnV55RD994ol7uNcDz+dIx47nIXKB1WSc2v5YhVq/yPUi5yHUcTHiL6+8fJwivavhfd63l5FvkryuY2WngScvF9HKvIh06zomfpoVhj/AcE62ndCQhW6+ScJA0lUlfLn0jGTWhtqJDJnk5FFoXAcMVhv+1skJEemiyJy4jrP4ZdLjLskFcqIfx8K8UKOT2giY79GCl+deJPKW93iPRCs4VwP2Vo8Dqw+65FP/ZB5w3/fIPO37zYneJ7KoEFEWbjC/iayA+9hw7ziFd8d4TnrAm8FdZF84oCA87a/Hvu90wx8l9jf42LvX7OX8m+A1UcH9fVRwNQvTEv4liHg24XSICCSv8JKTYlfbk80OQlR0SqNipff+7mpjdq9w7ZS4odtFueS0vlHkbZqP0YN9XznRPjBkMrj/ODPzKIgEGHdUuOkhamggRLBxs+G9735SNL3Bx96RNY/3J//JfD+KY073Xdmt40aCAmLulVlZaLRY0JjvO01jYWTc6wqP5ba7KZanW4mLuY73DbVPN9hOu1Uru6hxrfd9JxheTCaNvGfDqSB8YJeei0xhZlXnfRdVpz78kuVyaggwfK5AwcS8jatrVFR3Stg0djUxKD700lCBXo36ZiHdfd9AiR0bmYrOMXFbTTfV+MOyjB67n0+X6Y7XeIb0kl/YwLHcc2VBss8G3fMP8GJzzoTB/jyi2voSkrXuRUGkJ7n2Z8n7/EOd0Nnv8V2xCfU5ZhP514kodxy/50z9QcQA+sLWb4plvl7C1veWY69rmuFH85wt8wI67D4Tytif57wyu9j/zLRv2/fbc+tXH9PTl8+eNHXtz/Rh1v7sF0DsTyXYSZE79tF9WjEogtjVb4nuHV6zhd6xsPY3PrbFPnfZ9H0wc3iHJ56EIvvA7Py7/1lh2vf1KeKbnudJU4e31A/XCaGgXPDHSsG8MW+dQbEN/dtsR7d+VvvHHnUg6ZxLsDhmTo/yQK/AQUlPiHpmDyLesgOC2oLQxsVsDV7OGewVUa7Ro1OncmJOzK7DLiXXIiuisUBLBeJdo/gjJmlMhY44nV9IzqQUbrcLsIrcKT0RV0TzJCmlFlN1Or0eBypDTzE+rx3hwtH7/vZiKhfy5AEnhiL79VllZj7RcPHGGCKMzDV4T6CWR++92UA3WvLUO9BCiOiGaxtRaG9+6cCD+Sa/sfU0Mm+GCPwHTVyepIc/SIuf2Blq4ppgvzvfMTPPZLz3C6QGILMXIsLlwdro9IGdPdFstSbmIEQkhWsTls9W6UgO+zNNTRAr80SqqScFxyN52+KVYurhG2vIJHaRvAemHkIkwwNLTclOqYQ5wdXFe3qSlL3x3hTF1AOw5UZnC70Q4dC2RXDME8nCYB0+RSxzGhAS0RSPy+eVdKDnIkTSHd3INiCB4RQ8Ema/08R1RgkifeXiTX/4feE0YDcfaDYR3eCaEaXwJrhw8b4/zH65TYiwO7pL6a06cINkA3qE3p3BoHTG8wFpdEqPO8fMF5EBhyOrR2NEMq87eRJ8R+aTKB/HxpYIg8e8cT1kPsJ7rjx5NBkM4UAiORpT+z07XlA2DcDUDvejchAScxy9S4NggL9WXnPfdzgkroEoHL3j2ot0gnPlYtBkgdipuBaeMnUz6IO0cXXAj7ZiV+MVLQNJ1+i8IPaQWD2On1Qk3LPI2YAzaEU9+qV2JDaRZLue58UL0sBg3LTBbLnECAY4My/niP3yHNInpRPF1ujMmLdGp9uI5Eja3qoNkstkJDMzzyr+tkGo6sb1Mx94MAOdppRG59YH8mfsV2a1w7n1Euzt8eBhp5HdcG6c0Ww2i+FJSHrF1AcjkpYLKaYY+8KBlP6pE8rsRmoiKve6RpHCXESAqAUpciRcOKBftyyA/kdJbUjeWk3tEJjq6yvO9SRY+BTsKusY0I8LyVw/pxDtiBHec8Cx0kyZbyTr1D79gAsw0m6GZQRb8X2+lokRN8rGOha+affDsjBvJHPS91ZtwKj7PgxPDN7ZKekHILiMJ1yLdAPZ2GnAhbnDmUtGjNdVwQZmuTpI7/hpFqSqVILaB7yInNflMfLqcd/RU9HdrWdEGq5BO0AKMA2La+F5Uy9sYR2ua5haWQcSUzRPPbvsSH6/P6dgWNfbMRwppmOEDCpeEBu4rPexY+/YretIO7UsbIcxqVjCBeicd5wdGMimMFAuyuqj0NZaL0DJcrlWepWIJj2B0vfPruuAmDfORIgiRmvqvANTpQ2rO2lTIODzyT2a+7FowwuihkH3lu+G4434Pp/5QnD0Ooh0lfXYe10Xkr5+Upnb71HWI8UtS4OYaem6yCOSX0uZEsfu4jQjOXscGxjIJjahTAw57EEyQp09GGeNo0rGmQHk19ELbKat6NeNTkX8fXt5GjLlIpz57nrHi+DNQaQvZdq0ptogw2ZkcS3Mdj66iQMeGmgsZbLwVmQ3ahfaSuiQlsnQszxpKi3FUAu2PErVU7rjsCfh1TxDZS2wVPqsvpz3Q119UCEdKB7pdjx59LRnyymKhBBW5s1Izt4Xdhf6nGVOQjVjdEB6FDQiuLA1mLOniTfZF4UopgK8oCfMlnnxJOSHB3sA311587g4yIyUPbgWhkRCgN0rBKFsSoN4wi5xmtFkI5djm8WHMDteEVeNN+J1I7g1JiGeicOu4EaSHPLFHJFM9oLNyyTGdE6thJu5BiSPQg2D71L7W9pM1en86M4kRUQjcibuUHzIJisHqir2U/hFH+y7WXKeFC3uCCGP8PZDIcCDg5iDAeuXDTnkonQHzbNr+VfoZmZFZwj5Zq5dDnkCetV1vMNZja8pFsbQBfPgND3zmLvqRvRFe2MEAwZ3hxAMWCxGbfK2CwomhAOIOXMwF9DUBF9aTOXamfYWHHPIAzP35mSlLDnkJgh3ZmDOxsx3o8UplXA6EEOjqWtYRNoxiqkLMPXS6/xouXLIp1p5IYfKsC5UQr75B09J9D5fIu98v+Z2qtuzY0vhy8/9pOzxZ3wjvZn2BZ78Q7642K8vYe0H9wpqPMvPV+4+8RN8fZXjbZ5E3sPPmZ2zf/dfYJR7enJnuN7258zOeb03/tVixaX0ep1fzNitas+GjXvtDSlONN/2I23PBG0fRRW1VVXKBvS5zVr7tUPAQ9tVs29lFVk/wtL17ptmRCntUkiERmZOswjsNle8COw6GEXEly8e5o+dH4v8LDfqG8W2PzEEpJHrLDIThg10Bz9QonOD4GHQT19DbPFSu3guwxC3B7Un6odF6cYZlXxS1zAkRefllB6eF9DJaRiGq5VrAEmmKkgttehx13Ap2nmKMGnUDeQNV2J7EJ3DqNdJGKwN6PneKbqR9sjdbkqaBWtFmVMxGL6GWN6IHnAJ4p435oLkZW/E3ISIfmXOOyq5rsY3IqUHPZCSN01urLaTGSXXVUFsv9Nw8kBL3zwbCXSrNxPe0fK6e4/v3LKHIlOKoZtrj30apLPcyLAdXs5dEmwj7GuIVGbMDReasl0SLLtFZCkb80qSbyN+4k6kH0QOkDQKTcMp1I0kxvIhcvUip/4p0l8inbNEtByifzhDMjTCePLi7yx08yEkfSmb4zQIjaXtpVuMkbuRPGOAfUc3Txl2aR8w0xfSyyfkRJlTLdYxT7ohZGtScpp0zvXoEzNHBTSVF5HNeezZdRjaxmU4NTfWxdVgL4a9cwdmvpFWLoRXw+yUFQ6p9WUbiIg6y2704omi49QTeTETczGNlDl98fBED6PYheDN7XQfW4QMkezKsJmIpg3Hq9Dm1NxYOjS5sRwcN5Fbicw9Bl5FLCePCx8YHENGpLa9iwtw3ETgSajbesKLe6SrGPE1NR+9COcvpAU/KGthGwQLoChDkak/z3lqR/Pzxt1AcqQaWgiYbZqFEsC1AnUavpEWvsECO9Zh2/DYpdSh4XWnhVffvAWN5VOkVpHe2Yzdlw4Sxke5HduxE7NMoO2P97kflXlFiuMNj3vGddxYix0P8cukBZyUHEJ6FpEO5MbanoManTLwloUGDxP9By3DuLb0vxWZ50anDUIDOG8aSUIjJ6VZ5AxC41cOBnHf97ckXn5EkR87Zl5p3/cjMbM9EN/kmgfuIHFTfnfKyIex0fkOzP3bJyUj1ImI1AIvgoi944L7ws6/ZwQpl7Rsxh1NYe7eWWXrQOJzcUVExKHRGRDRF1aurM2JOc2IKF86T55WWJjrva7rXRQxSn6ndK8rePN2w/6e012ACAd16lUkZrfC3Fj60qhzzGm9bSN7w94BIcOx9PfW2vu1gqCxL0Kvs7DGJJ1HP/fLD+3cWOgmX9fFGmMIg30dfu+/sgEj6iu/jiNf/OshlS1G+4XI0DelviTjVfwgZe5tm4pXXe16v6eXEPu+n7eXsc59+lgM8/IiR+a+n0dmdmcTtIVu9vPQcDUKpha27jjw0qB10VEDG18asC7g2B9cgRkVl+F1ZqblzGzQukxmf2h6zKaXWM67V0BtPs3+mWT97eA4j09UQlPmwvwvAlqYKmaAQs/5bqj9PH0ScmMJhvpx5rd5Qa4rbQPe8VVrjNs29wpOERH88D2fXpd8yrznl3ATiuzngx7UTGHeDIpggJ3pRfZFy/AK64J723pKe/48NmoimtrwkjE9bWZNKRsRcVJKW5o1bXqXAw4eam1pWEls020lz4mMayXb5JP2a/Tu2/O+C6i0kVOHSgtbPQpK8zgz9JY3fI9L6N0nIDfWRRIcs6spJU1SpwpQpLCbMdfkns6IlVIahYpO1Ig0peoaITWBiHRBQHVVicE5TYKo6jSiWgG5sZLT5a5qMandiAv9pg0iMWt1cso4p+SeAw8P5WWcoeSCckMFPebUpj3btO08l/al+Er7g7MrcufI9Nuoxr9LvZ6JiFuXYvqDtQQcUg5aN3SapvS11UXuuq2UfSnBFfJyZ0do8217S21ZjelC66kaSqqUpE8UpmVB2qDS3vthJAlcSMw0E+i/SSQRQHifu3GfhNxYiV0kolCZTzLGGBod80gER+VE9EQ4KLmx/NhCDUSeGkYPdY7SCDkS8yEH8yCmMg9EFKyik6JjtkQGrLorGUN0JFZyaS0tYW0Bg7XWueCN8STZseuJqEvMPZlGy+30kCfq3YPJE/kVHIMISUgPOvFEOH18NxnFF2sT1y3jYa11bEeR0drKaZsxW2uTlkZ72QDtdrtBNWmyIM3gS6aVEeoLNi2ip4wtNGOabcpKmUW+iPUOE7uLjGrqqpg6kWm0YNSY2sYEbxyRnGM3I/Hm8YId89lVgwBLOEbMnwHSgd6lKNIRdpZ7pKbIxiNhMGjgyuXn42Y13dTodNiA1EnDSAjSQTUo6aM67MAanBxMN5U3qBMlJk5zEGm4Eeg8LBeDPiAtriVBpyfE98pZCPN8nJxO1aQZCRTbAnUifeIVmnRzinjMx2425kiU52Nro6wFkqa1MvO0Cwi15xkGvW9O0HvBPfOi+LCoOkFtsI6DlbalP4Xf/qoPWGf2iCd1ZXV4+soZ2cRcy9YwROuDUU+YegJTc0ZaeUUiOeZjfM7U6y2IaiIm14vMjkuQJdMIfIa4UbJ98BnoH3uIRJ6Qeh4JI/dC/9ejkE0kwa5w6HKPQVlnzVaD+ATR5NI6iDbnJdTNYGg4UyRcIAN6twl1dfTY84l0pRluNlcFob7ReXGHfgW5sXSsZyYT42k5k+QNSEHq00A48AxMamdIPeHNIJdWFtC3PDIvYKR4xv6p2TAFyPT+cXxgY0d0xnPl+zSUY4yVh5lojnHhcgbgQ3lQ3j9+B/EXlinhpHkjQ0qEsY2RNoJHMTYKf/GMqavO1ElIVCtz+81jpzPGvtm6wSf2jjnNgmKKlkoyjz9B/PoJyI0ldDFPQucweB1qbqwDDy2dhOvqxGg50cDZ3Tkjx3Vl/Tz3dFjCG64AEY1TR+rdKrJxIly0ubFgackTlyVsDAA6PV4Kf5g2fOJNZNVNMA8k8hqu0oh/jvtaIXW5YAQLesXaoOosIlPLAJMHabneEcEmXZPSQfnatpzmchd9YdcuD1on4/YxU0GLaXbfz5vKHAlH3dP+BJFoxK8t4C5e8vc92K099gls1RCplYG5w06/EEIU8m04vqVZECGSBF1urBZGDYlXyKqhsNVw6XgiT5xKaRiexvLUkHFWbEnrdNNOt6aZvuQt9iMZk1qO6EWsMyKOYtWXwj9cQz/c+2ciJ8EqF8GVc0OPhieRwh8EbP9cLwJP3lAGnvzea/9YH+UQM30KXt4PNR1UqdyLcujvjPhJmUjkjME5ZjDP1VLKxjoi0rllahYksZRimz+67SAc+UBaJk8NYkokaaB+y9TgbpHJ6ZmRrsnQ8/QqFLaZwAK8/CxBaISzpOyOjSe/R3VwdyvOOY2CV+OcEJy+trASNRqYBgzCtq+xB7eaAIxy1dgBx01/ikWjEQPnnvhj3gIBUz0wVefHc6be4SfMW0dycy8ypyaOIhK2SBg1aNz8FOTGOt/k3Ehicr6YexRQNpgbC7v64EQydDHXgD7nI2lJM4pHwcLFiM+5Zx53QY8SnS4dlLsJvTSkXsRLQzVexIfE944PZL84dSheWun2AFvYrqwObgFxnYkPxSQ9Oz1AvNlmJEKzsbuQTJY+PeiQjJ/aOGiGFE+rZj5WH8geNu9GYfP0AjRonbG5AeuMtH1t+fxOB3zYdCxn3dmXwo2NusVSmZ2VBlPbucIP1z4jZdO8d5l/HcEVdlpP2jW+NqgaP7YjHuVyiql50yX+es7Uf5EeEeo0KD4bE5wbCb1gnxpo1zB//39RnyPzBXJcLSGA/2AIHSiWeQohHBXUbh9CXpT0TnlqFR9C14WNuSi5rtZGRwC1W49G1JGY7xAOLz3Q2XUAoPdITXwb1y7fzOkIXWjlzCdgzoOmLYYQTmaOiklVQc0itYUwMdtOSWvFSw6hZ9WIXFqNMydky3nViNfUDKSEUCBDnhVsMKehdKnb5kur1Gr5U1iFlPiaKpVcywL1BwccBEa31SplYc4/4MO8jQFHyV9aSoMolYkJy/XXTAnm5BreQys+hHAxq6Zq/Hje1Kjo7EFbCMfDsTGolZCOvDBr3fxMl2JwVipcPvLbgutFLD9BKBdpbafyD8BSl3E0QjfztIyDYGef5B7HXqRPnwVSv/IPUu4f9x3B1rX7cUfsKj+Jf++I/SfmIGF4i/1BuFgfpcBfl9f1rh+7CULizwt2Xd2vzkqvVav7mWMb/3E+F8b5PTbco6jpe7hRfO9Ut92a8pIjq82+PoeP27b0bAjbixjnG+WdKiZElM/dYCsc5ohjfaZS5Wcj+o+/lVa9bVUh7j59hzWf9C0gAQH1W+RvgXizEpiFMX+rAaZtc0oLc8zfalwKYT++IbIIiiwvYN7za5iO2apsgstzRPTpNUR4qLtBlDMxS3WE2wjXUZ6xi1K0inB/iv/uPynyrZx76aYiNh79d4TNj4qfEzsjgkIj84qEuOdv8dTczgfYQI5vEeNgCyaM3yIjyqa2sG82U1RRG/FxfUMEyTGgXO7D9Bi+iwb6PIZfg/ewVUp2XdDKickoj0cO5/H6zvcRGX2P7842HR5jRhp5FerjKXn7lge3B4Xx9N8mN1JV+EYXE8r2zfaDsrDvd4lDHJn5jsOjxMrMNQ5xaFiNmBgnZnZDHGJtY4lDLMyc4qBqWuNwQoDONryqs9E0OEVnvNuOuUbIdwMd4hZmB1cnjuuGOMY4iXIRDhfU6xSlwACjvIho2nXdRX5YkCTMHSzeJ1nOMV5MMcSm9QjmukVmkWVxABb+rMbccYgrq6YmZhsb5xfoB0gUpq8EXlWdA1EXG1e3OAyX01eCu0D1uQ8T0Y9uGa8HePKW0aidf/eBma84RNtg4xAvZp5ANI2Y67wbx5pop7YWo6/mEofENcYNGBE3NVqjGGJaKUpcRd9iStRXQmlISovZgJS7BQs62o/6FsYptlbCB0yNE5Q0gBagmNqisxmY0AOhq0aTGwZtixm/O5QqKQYRZWGedxERDJZrp+a6OtETviPYMSFil1q8FMTdFOat0QQsXwlRSBZNbiw9QojY6LSCCH/EWD3iLqOeUU51N9BKBRE+tWIBFikXBArUO/QTDHA34hEtKKXC7HzJwihhNuYkDxCE2ShrfT8Ty7zKJo+npxmXB7iXBXETItKqmtr0RdnVRF79LohNVypOHTBJMRVBX1tPXnDfmG81URgvAk1NhNDUjzKgd6yfoFaAnX+rxwdRlKM0GxARI/hdQxDxfbN5H8zz2zue1BZzAJNw3/RjiNBywffIiXbZR8ipktpZlLgWbQvbTFslFG0ljEAK6R9KVrOga2Fq1rS2viURVVOzYmoEQfiJnUGoU82aNjLz0JayzTBz/8a9A7XW2mKW7ww3gi6kRvzdiSxq/1jZXCek5LqqB2ZweteLxItE/7jQF7tItuy2S6hhJTG3IRn5FDmXRmcL4fZiGjcfpcOeJ8LRTt7fWopL6m7gpdhace6G9TDmBYFaGONNC1qrpVTqf0bz4sf7vwM3WdVaT5c0H1G++/fvd1RhkXI/aeXy++f7F9Q73j9aO7Sk1FlHIy9ukPiL/MR9M6U3EaWzcCey6BJ/uU5oaVxUTIXDOr2c4PwxbT2ahkUE6NzYkFynSP8CqnPOKcwAyl2QOXHEvNlBQkpBaOxFIl9IEsBZfoDrbObixaydyMi9kMzbtrm2cdaukNzM20hyf5xRSHLZtgRa2ELSOWsEVMLFUZsFja4o0vMtZO4sLY80CN2b1bYwoHMQmVs2xTIvRCGlLDTOIgMPUKcvnEliIwyaGoRGHkSOkShUdpfQuFll2PH8AJg0KC3G30Fk+W4Qb0jCxhPKlYpvG0+HJ7vQOp4u2Dq3nItFlEPJpcU3AkakiQvhCHX2SFWv01seBSfeupCzl8yriNnac6p7/N4EuAb5YbE8rVWH+WEpR0Tc9u3b4fHKVsql4jCivqCiG8SC6JsLWnlEf1k+fJxtUV4MArZAS2qhTJeU2F+m8apWmzjgT3Hco+fSVKI1eLYl/qo2YICmpmoTc9K9PEBONMDUwgZ7dgfmj2O2bLIprMcbI31jgfSplsqWJFab8WgIoA51TChLmpQWA3sut5Czgd+3yYuAVwvUFuPdJrLArGYRVgIW9jhX22HQZTVrEY9k21qYwaPWDrOWA4Nrqput4MCpMXVAv/ENB4XMzs1oeFVMHXjGnBqdjnkVzVsUMh7O9Wi4iIxsDcbvCNMZGZknJf3V+fHxdN4TISX9H0cXyC8NI0A3nk7R2YpJ0MYsvuuMBOb16A6iM7WeWacgXdBaceokEW5V4HWiYVSdpdeV3vHPMwzcDdAgOhPiqp4h8hALUmo7UG1Y2RmMygApBINCvCdp0LlYveZjERLRMBzVo85z7wXYnxIEJ9b/MTnrm4OhCGr0ZkuwUTR4ywDTcKLRtJgHmB0/ARFBymtA2rhB02LcRriCUauKqSiFlUrIfKszGmwX39rCoE7TQsegWMIR1HlD4iKiqYTcYmpgUJ4jYK9tMek7A2deDd08IRhG3N8t46znZHPLIgsYdny6tgH7qRME341kIQuPYKHoTO20NNN6T8wn7UMLlt3CbEoHweTkdy+mmD2xKGo1DV2CLildpChFWTjW+zwnJ7+b9OisKqRyk2LNJn7kab0tZww1Hb8Pgq01aRgbCJyfnwMvGp1cWxawdfvJRbg4mY+PE9GvfIk0nGyD+hbXvGVSspTVKkRHjOel7RN4Yqi1w55X9NTDFoOZn0IUNsFViVYj0ODQjuWWFsYFJbrim4XGVE0l3EjlOWobnijEeEYtHRrr1vV2FqSLMnBRedKjNfVAszU6E2Brw4AWg/4bgCN6Zzuk6x4n1oyn29wp0ndCy4MDzbIU5kvkuO/RsY5bZBkjHpXT0gvF0XHJQpFIFl5IOqDzObx04xgk8Gb2OC5iptbfNcLsjkd0fEEVbnoRnlEK5WLjLWl91rkgtKT0khNm04DSJccp0uowWelL3qvHibwf1JtsCjUm+Ui7KcDUXiQ+B58i/X3frJi6+8JcSY5lScx2OcRfK/PqxUSRrjo963U/zWQandQg3diJDM0fcbzETLygH8d+71Nq3LjHtaV/7Lkf834ya1rMc4vrQU+EI7sxkvQjMKkTc63ADy/HYp9cLGoLq4c6LjsKmShyVI6gEkbm8TkWpGFZdUzgpKTRqY+QJJy4H5qsZvdz2KCaepPkRmdlvpHiAvawi5GwbMyX4DGLxBbceJXXkt+Hkt2qdohvWdWPCW7sTkQU4Nzkcf8xgqrB/d2nlnak5tLadhTZyTFvGZVb2o2NzjlpUDJr3TtOfAnuO2JmtuG9v01hPVHKbaWGkAIR7S+wAG+mKFc4XAL0bykc1lodPm459MLhLyi1g+8GlCeVArv9xb8G7fHImmdSKdKVzSBiturFp8g84f6A3mdr4q99HxRTMW/M7AbE/b0x3yBRWGblektXwRyuNKm+wj80/HQpHlGaPzzijnIx37ugUgm37PveO3h9ZseFedjFsuaxn45Z22Lepp0t4OXi/lMsJ9lF9t0yL8CkDrQ6Efzx1q8+yp0W9S0sHYhIEzcI4lGZOcJKgFWyyX7psY0RWZlu+7rjpOiMjtsvG/ZOyWpGN/Pwpsor7iub96zYaAPim1ZV56xJ2eYfzD82voGL3k+0GOaK//B88W9Ma2He1knpwFq4UQGKmutqUgWuq1U7sLp28eta4dB1VagFEupzOu06Oa4grgmoK4rOrf0Xuk6ns58HSLEAq0S02EmJEnVgmP0gQJmKlhT7+UNaoC4QUY6d4HiO2GABniMC4XkVkV9U4KnW1NRY5qZ1g1VSWyvBanSyUkEVGqirBKiai6rl6Q2jppqTUgesxrBpfEjMwIl1UipNxakVWhWd21O5wezK7G5oRKPd6QMrsHVoUC1mbmlhSfE0ooEylUpQdSZQDVj6tbS0MFZMVbbdz5haVFMTrIRNvzpsSvNWTUktq4hlNS5di7HM8Ju+rkpEw79yUM7dp1854Aqz41/rV+7zcq9lPQf3tUw8Lg3zm1rZ5nn7CP2b0jfNdMy2lTo/SgXbi2OeoWPnrAyNKcc8n+5LB/M+9LOdbN/j7Pv0BC06v0E+lmCrhubnsFCZb0JBGRy7HlHQFOZiUBB795VDwJm5LXsUc6q1AimjyF2TIkXJddWUtmxTtSqimIEozYqjl+KAutQqSaPTKaJSVcW4S2htEeqC0LgQBp5EQjmUeSvFVZm3kl8j4fw1xIhE2SlDf0VAJwchT2gcczoIzhWsI09E44MbycMuoeI9zHXFIxH5qYWi5LraqFHXMnrYZfJEMP/ArOS6msl7EqHKE9L/RRj0HHik1O0HF48LTyQj7L587jmljCdXg/FriOnIYhq2TGcf3mdi2xEdcwQdT+QQmSsHEROQRsflyAI4YbqmmJRcWi2PyaMJKAtvQth5zJuQIQkZ/cq1RzkID8uHkJi+7xNvoQl6YPHo8ezldMwl02X8zcwXdQPomlMPHDq6+GsI5hPB4tjNxPWKlbno5jN28QDHQZjJBiHwvajgx3QQFkcS7GQwtMSl6LRERx09zmKSt2Jg7/szDYTXA/HT8/Pc44sQaWHmeggKWJ9XL0inY3Ynofj1y4geMhmkOFyJtfPca5ScgEbngKYFw7ziK+a5d39knnva3Fhmen6eezzo5zMWjZgJ9jgWmVPqlfmMfTEteJumiBgsYIJ4EfGAgzlqcJCk5MbCyHzoac2N5do54RiiG6WwfWaee9tH5rl36ea5576O5rmHh3POOXgWYJJjvkLPLqJsD1DWRtMo5KdSStLjTjTV6THi14VEz4F0rV7Ms5C/R5IO5ro64CJoKc69Zv6TWZn/ZLm+eD6WESQpz45vIhHqmdOB3nhaHfNE4n1w7AYRY/LNHPaO+dwp8Qp0zsz9rg6z2QwSEelJHQqhKbzhvrAzextChKGyu9RcWt2eVW4STweLSk0HZdktpOhMBwqhn8DVARI80lcOfXd0XRdmx2vujiMMMA9WF1Ygaw1AE0iYFQbHfIbIvIQ58RQanVHpNTmFzjKXrjtMy4JTE1dhtk0org8XwnTdUZkb8V2IzBzDqdE1hi70jAwlZxfzouhkN3eKSVPoujnxl2Kx4cNpKNEPf12XtCxLEFp+ZYBt33eU5YWrrN/7L2zc1JTX3vBg41+rUFyt7ivx1KJs21ZeclmqfPQwKpXi2lS8iHvHiV8U9VbSy6hlcx902r5M/VaqWjXARtcIsE/7MDbqkJLbAMJKruuOieMpXVBziND0LouHiYhzXTeDqrtzyfs1ss/419LENtAsoD7bKFFMbSR8///GJ4Ii1zeQG+tGKW3p4l5EmWf7CiYviO/1ZVw72Y/gzIsuFNgOEd/9g5UEcS/M6WykZGYuufFh0a80R/uDTTPDuSvSmIB1bMwZVlJWxY7aUsqNt0XGTZZTHskgq/Kov9RU47p6f7Gp527+SdbbMifaEUVMgvfHMxtzj4QITR0Ehe7v/b4fkofum8iNtbZC9hvroJKHIdrXgR8c8prxNQxIStIfg2EYhso8IfXDMD6Y0QxDLFrme4Kl3ftn7u4dm6bJ2tkLWFenfVevXq1Vrc2VEGhYxpbV/mApl9siI9OvTZE2y3kkoiQ0c0LKZOGMZysRc6H3wOyuYbg68e6fpNux92imB35oSnXnvv+U8P3/CDiz7cQn5umM58LM9xljjKd9YM+o5sYiE8+VmV2jqba2+jMeRA9qIxn2m+rjeTPz0oSynjExlzPGC7Cc8ZyYOanxbWejYIStH2p5bg5XVwSOXNyEAnWO0KTaxtl4pAQWE7POVL48hXjaj7NoUpwFuM7qOs7zU/fRzg3t2JV5LrjClh3tbGNZmixsi/KgvCbUMgdDSvuOSFkXWTbNazznR0Jztr80DtMZY4upsHEAMRpTW9k8XprOMwvXaxzd6vHU+eeWcUk2Y/gM9I+NaBwXj4hyteTGCoiIvT43luufyHXFlyBKQ+2UdFCjeIG3qQ0gR9KbKrxzsGjuP+sLs0XEfWJNhqURRIiIwWoZO0NmbqZv51Eapd7x5HXpoEQEu9oCIvqV2c1KxiSeVFM5iCfc14+yHWAAUzfycngQtHV9R9TNR+SpM+TnuWvTPiPqcy/X75CyA26K7UQmdWEPV02sh6sp6uA9XAUcJnbDW1RTD8XUdRdBBK0iQ1OfpxhcVDmEsVkc87FqZ8b/CegfO5Jk3ryY9WjLjRWEllObGyuxJmNS0j/luIlo405oiSJ9szBrFro1fcUTyLB0iAy8iHS3F7+xswvcxt+NztDobGQvJKG2HCY1BSfORHJZa9WMSTLyrJhkWwirET/xrMmY5PGym/EjszU42821Mevm6mNWZi5C9H8RgXxAaiV4KKDjUfFhBBt48xve516uKmWtDfpQkvOEkE1/ykQe73OvOuFri7/PvWdMLTyLDMDUSYhMsVt6ztSbaLIKm8GLIafgUfkkQ6SOf1wEs/2+h7wnChbkxqptubEcYWQX2ub2hh3ImKSlR1N5FFLSR3UYlNxYrXM+lIuTwZ4jTB/VNudDWXmD4yaC44ikxSVlXqzuAWxEK8rK9gNze6ONV8GVM8x1ZbgQ+ilt1mlefn4OV8avINRBmRdrqgGPlBJzWkXuRoFLM+YKp5+6GRISTYq958N8/hqGR8knlteYOjuelXxA5fmXr7cY/39p8gGtsCabp2NOj7J68duDReR7/8lBTGdwZJ6E/OtyYwmSStt4OiAds27Oh0+Mp4PwM3M+LFy1cz58wdzeZOPGlmfxlYtmWoQRs+NyHAfRXF87z73aOsqqiKzPvSwimqKeDxPxTpsqSe/5UFZueM7UOxxdIPKTkhtL92y78rgQNs9PwMuroZEnJOpjPNtyYx1P5cYKMcbo9As/uSia9FFx0OTGWjhgtumQxwLldKVZnOhXFyGTyKagzhExb2mWD3MjXXy/YM6HBqSPEu/qvToeaD/hxBG/6Tkfsp71ds5TzFqmOtcOWIdv8hHNsE0S+c7NF6HOVLA5AzxvavW4sI50CvXQyXst7hTceBF4uP05eIt39UAa7uWJ3FhBaFRyY12F4UnGuDjWsXoxp5BsMGPSCDMmUSTJhUeS0At5mAHJkPRK+ih6kJae6BydbmypqvPD2E4oejHTs3M+JIVL5DjguOx3vyxgq+yMhOWyz88F9LqsKv6jxNwL6BVjr2w5TTqdriOOpq9xQzuy5nHZA7dX2kTkpF8D92VWZO+fWSugfcG8Zcoui4tKy1Xa8ZHkJ1iNqS0LL91y1XYILwg2TEg0LMs18S27gYPUiaQfl+v+nifv+txYu6zMPbbkxqJX5MbyiCJYlAxIl+NxF0HMGzOP0oiiymlGlAYuHpEabCNpF/2cD/kmRGoltM/5EF4pM4WfnfOhWJAjSbmyNgCd+777wqwk61o/NEdcVfwL5nyI9Ig7aF1Pis1NGSmNMd9kkZ4P/Skn8kQ8Cc80NU4Fcp4wYME5eRbl2zrxNXvim48sN+K+sTwdYvE9tCOIobLGVP2cD3mkZ0xlKztgwh0igvv+Y888KemmKgEp7/w9T1k3ZrsWZq7rNG3MbCdYEuzwWhiU7SEBtMpGkmsTv+l1Tsxcp0mVyaWRUFwjqkwGexBZueSBmxRNtVHtpqk2Oks5hVrY1q2lP61qkhJyqxO2UZGmKSkmaXVqjEhPuA9o5FaN+Gc0JdUHTWhOmqt0GuBIsPYRUb1SaUMhpYrliqlTAVn4lU+lA7+wmywKvBrKVCoZ6KY1p1v2q/2Y8Z7WyqyYqvPjA6Y2FWq1JqUJFgtlgrRfBUrZ+NNcHPNJeAIBNgiV59VNRj4Pk7lLP6FPz7zlB2BZyXvEPjH35AlpdM9fXCY05fOw3aqOWxh2qZ/X0aBVKT8LG7kSuq7rQTsK3U8J49Py+tAdXeHPS7nD8XldrNcCynXzrwCU9Vr+Kk1ZfmWA5f//Df/5Df/59af4lYVxE5/h8XS/olB+w39+w39+ozQYAA==)

示例输出指示设备已准备好与 Linux 主机通信。

### 在 Linux 主机上配置 gdb

请执行以下操作，在 Linux 主机上配置 gdb 工具：

1. 安装 gdb 和 gdb-multiarch 工具。

sudo apt-get install gdb gdb-multiarch
        Copy to clipboard
2. 创建调试目录以采集版本中的所有符号。

mkdir test_gdbserver
        Copy to clipboard
3. 将具有调试符号的 rootfs 从编译位置复制到 `test_gdbserver` 调试目录中。

cp -f <ENTER_PATH>/build-qcom-wayland/tmp-glibc/deploy/images/<chipset>/qcom-multimedia-image-<chipset>-dbg.rootfs.tar.bz2  test_gdbserver
        Copy to clipboard

cd test_gdbserver
        Copy to clipboard

tar -xvf qcom-multimedia-image-<chipset>-dbg.rootfs.tar.bz2
        Copy to clipboard

Note

运行这些命令时，将 `<chipset>` 替换为下表中指定的适当值。

    | 芯片组 | 值 |
    | --- | --- |
    | QCS6490 | `qcm6490` |
    | QCS5430 | `qcm6490` |
    | IQ-8275 | `IQ-8300` |
    | IQ-9075 | `IQ-9100` |
    | IQ-615 | `IQ-615` |
    |  |  |

    `test_gdbserver` 现已准好这些符号。
4. 使用 `gdb-multiarch <EXECUTABLE_PATH>` 命令启动 gdb-multiarch 工具。

    例如，

gdb-multiarch test_gdbserver/usr/bin/tqftpserv
        Copy to clipboard

    gdb-multiarch 工具在 gdb 控制台上启动。
5. 在 gdb 控制台上运行以下命令：

set gnutarget elf64-littleaarch64
        Copy to clipboard

    设置 `sysroot <path-to-new-debug-directory>`。

set sysroot <ENTER_PATH>/test_gdbserver
        Copy to clipboard

target remote <target_ip>:8888
        Copy to clipboard

bt
        Copy to clipboard

b
        Copy to clipboard

info threads
        Copy to clipboard

以下屏幕截图显示了配置过程的示例输出。

![../../_images/configure-gdb-linux-host-1.png](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](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/](http://www.gnu.org/software/gdb/bugs/).

Find the GDB manual and other documentation resources online at:

[http://www.gnu.org/software/gdb/documentation/](http://www.gnu.org/software/gdb/documentation/).

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)

有关更多信息，请参阅 [Linux manual page](https://man7.org/linux/man-pages/man1/gdbserver.1.html)。

## 使用用户空间日志进行调试

通过设备上的 SSH，使用以下日志调试用户空间中的问题。

### 系统日志

要验证设备是否生成 syslog，请运行以下命令：

cat /var/log/user.log
    Copy to clipboard

如果设备未生成 syslog，请运行以下命令：

tail -f /var/log/messages
    Copy to clipboard

示例日志：

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.

### journalctl 日志

要生成 systemd Journalctl 日志，请运行以下命令：

journalctl -ef
    Copy to clipboard

示例日志：

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.

## 配置调试符号

解析 coredump 需要调试符号。根据设计，Yocto Linux 会编译一个软件包并将其拆分成多个软件包。例如，如果 `hello_0.1.bb` 文件编译 `hello.cpp` 文件，它会生成多个包。

下表列出了与 coredump 相关的软件包。

表：解析 coredump 所需的软件包

| 软件包 | 说明 |
| --- | --- |
| `hello_0.1-r0_armv8-2a.ipk` | 此软件包包含一个 stripped 的可执行文件，是设备镜像中唯一包含的软件包。 |
| `hello-dbg_0.1-r0_armv8-2a.ipk` | 此软件包包含调试符号，但永远不会打包到镜像中。调试软件包 (-dbg) 会显著增加镜像大小，因此包含时可能引发问题。除调试外，此软件包没有 runtime 值。因此，作为一种策略，Yocto 不会在镜像中包含任何 -dbg 包。 |
| `hello-dev_0.1-r0_armv8-2a.ipk` | 此软件包包含导出的头文件和库，供依赖模块在编译时使用。 |

根据 Yocto Linux 标准，编译位置路径：`tmp-glibc/deploy/ipk/armv8-2a` 存储调试符号。例如，`tqftpserv-dbg_0.0+0+de42697a24-r0_armv8-2a.ipk` 软件包包含 `/usr/bin/tqftpserv` 目录的调试符号。

请使用 SSH 执行以下操作，以便将调试符号推送至设备。

1. 重新挂载 rootfs。

mount -o rw,remount /
        Copy to clipboard
2. 使用 `scp` 命令，将调试符号 (`tqftpserv-dbg_0.0+0+de42697a24-r0_armv8-2a.ipk`) 推送到设备的任何可用分区（例如 `/data/`）。

chmod 777 /data/tqftpserv-dbg_0.0+0+de42697a24-r0_armv8-2a.ipk
        Copy to clipboard

cd data
        Copy to clipboard
3. 在设备上安装调试符号。

opkg install --nodeps tqftpserv-dbg_0.0+0+de42697a24-r0_armv8-2a.ipk
        Copy to clipboard

将调试符号推送至设备后，系统会将符号保存在可执行目录路径的 `.debug` 目录下。例如，如果可执行文件位于 `/usr/bin/tqftpserv` 目录中，则系统会将调试符号保存在 `/usr/bin/.debug` 目录中。

请运行以下命令，以便识别设备上可用的调试符号：

cd /usr/bin/.debug
    Copy to clipboard

ls
    Copy to clipboard

示例输出：

gencat   getent  locale  pcprofiledump  sprof      zdump

getconf  iconv   makedb  pldd   tqftpserv

## 重启系统

用户空间重启框架使用内核驱动程序 (`drivers/firmware/psci/psci.c`) 触发重启。您可以使用 SSH 运行以下重启命令：

表：重启命令

| 命令 | 说明 |
| --- | --- |
| `reboot edl` | 使用此命令将设备重启为紧急下载 (EDL) 模式。有关 EDL 模式的更多信息，请参阅 [Qualcomm Linux 编译指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/flash_images.html#move-to-edl-mode)。 |
| `reboot bootloader` | 使用此命令将设备重启为 Fastboot 模式。有关 Fastboot 模式的更多信息，请参阅 [Qualcomm Linux 启动指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-4/tools.html#fastboot)。 |

您可在 `reboot` 命令中使用以下可选参数。

![../../_images/reboot-command-options.png](data:image/png;base64,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)

## 后续步骤

> 
> 
> - 要强制设备进入 EDL 模式，请参阅 [Qualcomm Linux 编译指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/flash_images.html#move-to-edl-mode)。
> - 有关 Fastboot 模式的更多信息，请参阅 [Qualcomm Linux 启动指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-4/tools.html#fastboot)。

Last Published: Oct 28, 2025

[Previous Topic
调试概述](https://docs.qualcomm.com/bundle/publicresource/80-70022-12SC/topics/Debug-overview.md) [Next Topic
调试 Linux 内核空间问题](https://docs.qualcomm.com/bundle/publicresource/80-70022-12SC/topics/debugging_linux_kernel.md)

Source: [https://docs.qualcomm.com/doc/80-70022-12SC/topic/using_open_source_debug_tools.html](https://docs.qualcomm.com/doc/80-70022-12SC/topic/using_open_source_debug_tools.html)