# 调试 Linux 用户空间问题

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

下图展示了可用于调试与 Linux 用户空间应用相关问题的开源工具、转储和日志。 
Figure : 用于调试 Linux 用户空间中的问题的资源
                <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- 由 Microsoft Visio, SVG Export 生成 Tools-dumps-logs-to debug-Linux-userspace.svg Tools-dumps-logs-to debug-Lin~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="9.6276in" height="3.38542in" viewbox="0 0 693.187 243.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st9"><v:documentproperties v:langid="2052"></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749999 }
.svg-1 .st2 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3 }
.svg-1 .st3 { fill: none; stroke: none; stroke-linecap: butt; stroke-width: 0.75 }
.svg-1 .st4 { fill: #000000; font-family: 黑体; font-size: 1.16666em; font-weight: bold }
.svg-1 .st5 { fill: #000000; font-family: Arial; font-size: 1.16666em; font-weight: bold }
.svg-1 .st6 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.5 }
.svg-1 .st7 { fill: #000000; font-family: Arial; font-size: 1.16666em }
.svg-1 .st8 { fill: #000000; font-family: 黑体; font-size: 1.16666em }
.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">	<v:userdefs></v:userdefs>	<title>Tools-dumps-logs-to debug-Linux</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="group1-1" transform="translate(18.375,-18.3748)" v:mid="1" v:groupcontext="group">		<title>Page-1</title>		<g id="group2-2" v:mid="2" v:groupcontext="group">			<title>shape18-1</title>			<g id="shape3-3" v:mid="3" v:groupcontext="shape">				<title>shape3-3</title>				<rect x="0" y="36.7502" width="656.437" height="207" class="st1"></rect>			</g>		</g>		<g id="group4-5" transform="translate(13.9509,-18.0001)" v:mid="4" v:groupcontext="group">			<v:userdefs></v:userdefs>			<title>shape2-3</title>			<desc>Open-source tools</desc>			<g id="shape5-6" v:mid="5" v:groupcontext="shape">				<title>shape5-6</title>				<rect x="0" y="72.7502" width="287.969" height="171" class="st2"></rect>			</g>			<g id="shape6-8" v:mid="6" v:groupcontext="shape" transform="translate(-0.825909,-133.401)">				<title>shape6-8</title>				<desc>Open-source tools</desc>				<v:userdefs></v:userdefs>				<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>				<v:textrect cx="144" cy="235.35" width="288.01" height="16.7999"></v:textrect>				<rect x="0" y="226.95" width="288" height="16.7999" class="st3"></rect>				<text x="115.89" y="239.9" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>开源软件</text>				</g>		</g>		<g id="group7-11" transform="translate(309.938,-18.0001)" v:mid="7" v:groupcontext="group">			<v:userdefs></v:userdefs>			<title>shape3-6</title>			<desc>Dumps</desc>			<g id="shape8-12" v:mid="8" v:groupcontext="shape">				<title>shape8-12</title>				<rect x="0" y="72.7502" width="162.477" height="171" class="st2"></rect>			</g>			<g id="shape9-14" v:mid="9" v:groupcontext="shape" transform="translate(57.5099,-133.401)">				<title>shape9-14</title>				<desc>Dumps</desc>				<v:userdefs></v:userdefs>				<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>				<v:textrect cx="34.9998" cy="235.35" width="70.01" height="16.7999"></v:textrect>				<rect x="0" y="226.95" width="69.9995" height="16.7999" class="st3"></rect>				<text x="-0" y="239.55" class="st5" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Dump</text>				</g>		</g>		<g id="group10-17" transform="translate(480.459,-18.0001)" v:mid="10" v:groupcontext="group">			<v:userdefs></v:userdefs>			<title>shape4-9</title>			<desc>Logs</desc>			<g id="shape11-18" v:mid="11" v:groupcontext="shape">				<title>shape11-18</title>				<rect x="0" y="72.7502" width="162.477" height="171" class="st2"></rect>			</g>			<g id="shape12-20" v:mid="12" v:groupcontext="shape" transform="translate(0.665856,-133.401)">				<title>shape12-20</title>				<desc>Logs</desc>				<v:userdefs></v:userdefs>				<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>				<v:textrect cx="81" cy="235.35" width="162.01" height="16.7999"></v:textrect>				<rect x="0" y="226.95" width="162" height="16.7999" class="st3"></rect>				<text x="66.95" y="239.9" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>日志</text>				</g>		</g>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#ltrace" xlink:title="ltrace">			<g id="group13-23" transform="translate(22.7247,-93.0573)" v:mid="13" v:groupcontext="group">				<title>工作表.13</title>				<g id="group14-24" v:mid="14" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape10-12</title>					<desc>ltrace</desc>					<g id="shape15-25" v:mid="15" v:groupcontext="shape">						<title>shape14-24</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape16-27" v:mid="16" v:groupcontext="shape" transform="translate(47.2699,-13.4002)">						<title>shape15-26</title>						<desc>ltrace</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="41.9997" cy="235.35" width="84.01" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="83.9994" height="16.7999" class="st3"></rect>						<text x="-0" y="239.55" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>ltrace</text>						</g>				</g>			</g>		</a>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#debug_using_gdb">			<g id="group17-30" transform="translate(22.7247,-31.4317)" v:mid="17" v:groupcontext="group">				<title>工作表.17</title>				<g id="group18-31" v:mid="18" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape11-15</title>					<desc>GDB</desc>					<g id="shape19-32" v:mid="19" v:groupcontext="shape">						<title>shape17-30</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape20-34" v:mid="20" v:groupcontext="shape" transform="translate(49.2199,-13.4002)">						<title>shape18-32</title>						<desc>GDB</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="20.9999" cy="235.35" width="42.01" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="41.9997" height="16.7999" class="st3"></rect>						<text x="-0" y="239.55" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>GDB</text>						</g>				</g>			</g>		</a>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#debug_using_valgrind" xlink:title="Valgrind">			<g id="group21-37" transform="translate(165.152,-93.0573)" v:mid="21" v:groupcontext="group">				<title>工作表.21</title>				<g id="group22-38" v:mid="22" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape12-18</title>					<desc>Valgrind</desc>					<g id="shape23-39" v:mid="23" v:groupcontext="shape">						<title>shape20-36</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape24-41" v:mid="24" v:groupcontext="shape" transform="translate(38.7,-13.4002)">						<title>shape21-38</title>						<desc>Valgrind</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="55.9996" cy="235.35" width="112.01" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="111.999" height="16.7999" class="st3"></rect>						<text x="-0" y="239.55" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Valgrind</text>						</g>				</g>			</g>		</a>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#debug_using_gdbserver">			<g id="group25-44" transform="translate(165.152,-31.4317)" v:mid="25" v:groupcontext="group">				<title>工作表.25</title>				<g id="group26-45" v:mid="26" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape13-21</title>					<desc>gdbserver</desc>					<g id="shape27-46" v:mid="27" v:groupcontext="shape">						<title>shape23-42</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 -0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape28-48" v:mid="28" v:groupcontext="shape" transform="translate(33.26,-13.4002)">						<title>shape24-44</title>						<desc>gdbserver</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="62.9996" cy="235.35" width="126.01" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="125.999" height="16.7999" class="st3"></rect>						<text x="-0" y="239.55" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>gdbserver</text>						</g>				</g>			</g>		</a>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#collect_coredumps">			<g id="group29-51" transform="translate(330.188,-90.5253)" v:mid="29" v:groupcontext="group">				<title>工作表.29</title>				<g id="group30-52" v:mid="30" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape14-24</title>					<desc>Coredump</desc>					<g id="shape31-53" v:mid="31" v:groupcontext="shape">						<title>shape26-48</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 -0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape32-55" v:mid="32" v:groupcontext="shape" transform="translate(31.7,-13.4002)">						<title>shape27-50</title>						<desc>Coredump</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="55.9996" cy="235.35" width="112.01" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="111.999" height="16.7999" class="st3"></rect>						<text x="-0" y="239.55" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Coredump</text>						</g>				</g>			</g>		</a>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#syslogs">			<g id="group33-58" transform="translate(498.39,-95.6513)" v:mid="33" v:groupcontext="group">				<title>工作表.33</title>				<g id="group34-59" v:mid="34" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape15-27</title>					<desc>Syslogs</desc>					<g id="shape35-60" v:mid="35" v:groupcontext="shape">						<title>shape29-54</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape36-62" v:mid="36" v:groupcontext="shape" transform="translate(0.734851,-13.4002)">						<title>shape30-56</title>						<desc>Syslogs</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="63.3172" cy="235.35" width="126.64" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="126.634" height="16.7999" class="st3"></rect>						<text x="35.32" y="239.9" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>系统日志</text>						</g>				</g>			</g>		</a>		<a xlink:href="https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-12/using_open_source_debug_tools.html#journalctl-logs">			<g id="group37-65" transform="translate(498.39,-31.5004)" v:mid="37" v:groupcontext="group">				<title>工作表.37</title>				<g id="group38-66" v:mid="38" v:groupcontext="group">					<v:userdefs></v:userdefs>					<title>shape16-30</title>					<desc>Journalctl</desc>					<g id="shape39-67" v:mid="39" v:groupcontext="shape">						<title>shape32-60</title>						<path d="M0 234.75 A9.0002 9.0002 -180 0 0 9 243.75 L119.77 243.75 A9.0002 9.0002 -180 0 0 128.77 234.75									 L128.77 209.15 A9.0002 9.0002 -180 0 0 119.77 200.15 L9 200.15 A9.0002 9.0002 -180 0 0 -0									 209.15 L0 234.75 Z" class="st6"></path>					</g>					<g id="shape40-69" v:mid="40" v:groupcontext="shape" transform="translate(34.43,-13.4002)">						<title>shape33-62</title>						<desc>Journalctl</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>						<v:textrect cx="69.9995" cy="235.35" width="140.01" height="16.7999"></v:textrect>						<rect x="0" y="226.95" width="139.999" height="16.7999" class="st3"></rect>						<text x="-0" y="239.55" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Journalctl</text>						</g>				</g>			</g>		</a>	</g></g>
</svg>

使用 packagegroup-core-tools-debug.bbappend BitBake 文件启用支持的开源调试工具。BitBake 文件位于：layers/meta-qcom-hwe/recipes-devtools/packagegroups/。此处介绍了启用和使用 ltrace 等开源工具的步骤。

## 使用 ltrace 调试

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

默认情况下，会在版本中启用 ltrace。

**前提条件**

设置 SSH，按照[此处](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#use-ssh)提到的步骤操作。

**步骤**

要使用 ltrace 进行调试，使用 SSH 运行以下命令：
1. 运行进程状态命令：

        ps -efCopy 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_]Copy to clipboard
2. 识别希望调试的进程的进程 ID (PID)。
3. 运行 `ltrace` 命令：

        ltrace -p 345Copy to clipboard

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

    示例输出：

journal_file_close(0x25e30170, -1, 0, 0 <unfinished ...>
        sockaddr_un_unlink(0x25e30170, -1, 0, 0
        <unfinished ...>
        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 <unfinished ...>
        sockaddr_un_unlink(0x25e30170, -1, 0, 0 <unfinished ...>
        sd_event_now(15, 0x41ed20, 10, 64) = 10
        openat64(2, 0x41ed20, 10, 64 <unfinished ...>
        clock_gettime(2, 0x41ed20, 10, 64) = 6Copy to clipboard

有关详细信息，可访问 [https://man7.org/linux/man-pages/man1/ltrace.1.html](https://man7.org/linux/man-pages/man1/ltrace.1.html)。

## 使用 Valgrind 调试

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

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

**前提条件**

设置 SSH，按照[此处](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#use-ssh)提到的步骤操作。

**步骤**

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

1. 将调试符号推送到设备。相关说明，参见[配置调试符号](https://docs.qualcomm.com/doc/80-70015-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/tqftpservCopy 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)Copy to clipboard

有关详细信息，可访问 [https://valgrind.org/](https://valgrind.org/)。

## 使用 GDB 调试

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

默认情况下，在版本中没有启用 GNU 调试器 (GDB)。要利用 GDB，在主机上执行以下操作：

1. 导航到 layers/meta-qcom-hwe/recipes-devtools/packagegroups/ 目录并打开 packagegroup-core-tools-debug.bbappend 文件。
2. 验证调试符号是否已启用。

        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-70015-12SC/topic/using_open_source_debug_tools.html#debug_symbols)。
3. 修改 packagegroup-core-tools-debug.bbappend 文件以将 `gdb` 添加到软件包列表中。如果软件包名称已在软件包列表中，则跳过此步骤。
4. 在设备上重新编译并刷写版本。

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

    gdb --pid 502Copy 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 <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 "aarch64-qcom-linux".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see: 
    <https://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at: 
        <http://www.gnu.org/software/gdb/documentation/>.
    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

以下是一些常用的 GDB 命令： 

Table : 常用 GDB 命令

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

如需了解更多信息，可访问 [https://man7.org/linux/man-pages/man1/gdb.1.html](https://man7.org/linux/man-pages/man1/gdb.1.html)。

## 收集 core dump

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

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

根据 Yocto Linux 标准针对所有用户空间进程崩溃收集 core dump。默认情况下，会在版本中启用 core dump。生成的 core dump 保存在设备的 /var/coredump 中。

要验证 core dump 的位置，可运行以下命令：

    cat /proc/sys/kernel/core_patternCopy to clipboard

示例输出： <samp class="ph systemoutput">/var/coredump/%e.core</samp>

Core dump 的大小应大于 0（零）。要验证 core dump 的大小，运行以下命令：

    ulimit -cCopy to clipboard

预期输出为：<samp class="ph systemoutput">unlimited</samp>。

如果未启用 core dump，使用以下文件来启用：

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: 使用此补丁启用 core dump 时，必须重新编译并重新刷写设备。

### 在 core dump 上使用 GDB

要生成 core dump，强制终止进程。下面是示例命令：

    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*Copy to clipboard

    kill -11 1024Copy to clipboard

    cd /var/coredumpCopy to clipboard

    lsCopy to clipboard

示例
                输出：<samp class="ph systemoutput">tqftpserv.core</samp>

tqftpserv.core 为 core dump 文件。

如果调试符号已推送到设备，运行以下命令以在 core dump 上使用 GDB 工具：

    cd /usr/bin/Copy to clipboard

    gdb tqftpserv /var/coredump/tqftpserv.coreCopy 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 <http://gnu.org/licenses/gpl.html>
    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 <RET> 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=<optimized out>, argv=<optimized out>)
        at tqftpserv.c:552
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)
    (gdb)Copy to clipboard

有关详细信息，可访问 [https://man7.org/linux/man-pages/man5/core.5.html](https://man7.org/linux/man-pages/man5/core.5.html)。

## 使用 gdbserver 调试

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

可以使用 gdbserver 工具从主机远程运行 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/tqftpservCopy to clipboard

示例输出：

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

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

### 在 Linux 主机上配置 gdb

要在 Linux 主机上配置 gdb 工具，执行以下操作：
1. 安装 gdb 和 gdb-multiarch 工具。

        sudo apt-get install gdb gdb-multiarchCopy to clipboard
2. 创建一个调试目录以捕获版本中的所有符号。

        mkdir test_gdbserverCopy 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_gdbserverCopy to clipboard

        cd test_gdbserverCopy to clipboard

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

Note: 在运行这些命令时，将 `<chipset>`
                                替换为下表中提到的
                                    适当值。

| 芯片组 | 值 |
    | --- | --- |
    | QCS6490 | `qcm6490` |
    | QCS5430 | `qcm6490` |
    | QCS9075 | `qcs9100` |
    |  |  |

test\_gdbserver 现已准好
                            这些符号。
4. 使用 `gdb-multiarch <EXECUTABLE_PATH>` 启动 gdb-multiarch 工具。 
例如，

        gdb-multiarch test_gdbserver/usr/bin/tqftpservCopy to clipboard

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

        set gnutarget elf64-littleaarch64Copy to clipboard

    设置 sysroot &lt;path-to-new-debug-directory&gt;。

        set sysroot <ENTER_PATH>/test_gdbserverCopy to clipboard

        target remote <target_ip>:8888Copy to clipboard

        btCopy to clipboard

        bCopy to clipboard

        info threadsCopy to clipboard

以下截屏显示了配置过程中的示例
                输出：

![](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

如需了解更多信息，可访问 [https://man7.org/linux/man-pages/man1/gdbserver.1.html](https://man7.org/linux/man-pages/man1/gdbserver.1.html)。

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

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

以下日志可用于调试在设备上使用 SSH 的用户空间中的问题：

### 系统日志

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

    cat /var/log/user.logCopy to clipboard

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

    tail -f /var/log/messagesCopy 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.Copy to clipboard

### journalctl 日志

要生成 journalctl 日志，运行以下命令：

    journalctl -efCopy 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.Copy to clipboard

## 配置调试符号

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

解析 core dump 需要调试符号；Yocto Linux 根据设计编译一个软件包并将其拆分成多个软件包。例如，如果用 hello\_0.1.bb 文件编译 hello.cpp 文件，则会生成多个软件包。

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

Table : 解析 core dump 所需的软件包

| 软件包 | 说明 |
| --- | --- |
| hello\_0.1-r0\_armv8-2a.ipk | 此软件包包含一个 stripped 的可执行文件。这是在设备镜像中包含的唯一软件包。 |
| hello-dbg\_0.1-r0\_armv8-2a.ipk | 此软件包包含调试符号，永远不会在镜像中打包。<br>该调试软件包 (-dbg) 会显著增加镜像大小，这会导致在镜像中包含该包时出现问题。此外，除了调试之外，此软件包没有运行时值。因此，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.ipkCopy to clipboard

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

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

将调试符号推送到设备后，这些符号保存在 .debug 目录中
            可执行目录的路径下。例如，对于 /usr/bin/tqftpserv 目录，调试符号保存在 /usr/bin/.debug 目录中。

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

    cd /usr/bin/.debugCopy to clipboard

    lsCopy to clipboard

示例输出：

    gencat   getent  locale  pcprofiledump  sprof      zdump
    getconf  iconv   makedb  pldd   tqftpservCopy to clipboard

## 重启命令

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

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

Table : 重启命令

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

下面是 `reboot` 命令可用的可选参数：![](data:image/png;base64,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)

Last Published: Dec 02, 2024

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