Files
luban-lite/doc/topics/sdk/app/backtrace.html
刘可亮 11c97ef399 v1.2.1
2025-07-22 11:15:46 +08:00

334 lines
36 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.1">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="Luban-Lite 提供 Backtrace 及解析功能,便于开发者准确定位软件调试中出现的系统崩溃问题,例如内存访问越界。在系统创建线程时,会分配栈内存空间,通过分析运行时栈内存的结构,逐层解析函数调用的历史记录,从而定位出软件异常的问题点。 本节适用于以下芯片系列: D21x D13x D12x G73x 栈回溯功能的相关工具均已包含在最新 SDK 中,确保已更新至最新的 SDK。 注: 在 ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="topic"/><meta name="DC.relation" content="../../../topics/sdk/chapter-app.html"/><meta name="DC.relation" content="../../../topics/sdk/app/usb-display-tp-calibrate_windows.html"/><meta name="DC.relation" content="../../../topics/sdk/peripheral/peripheral-intro.html"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.creator" content="yan.wang"/><meta name="DC.date.modified" content="2025-05-16"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="backtrace"/><meta name="DC.language" content="zh-CN"/><title>Backtrace 栈回溯</title><!-- Generated with build number 2025051600. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content="backtrace-d3752e1833"/><meta name="wh-source-relpath" content="topics/sdk/app/backtrace.dita"/><meta name="wh-out-relpath" content="topics/sdk/app/backtrace.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2024041900"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2024041900"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250519091401"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2024041900"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250519091401"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2024041900"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2024041900"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-styles-web-internal.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/notes.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-common.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-images.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/footnote.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-highlight-changes.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/search-in-header.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/topic-body-list.css?buildId=2024041900"/></head>
<body id="backtrace" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div xmlns:whc="http://www.oxygenxml.com/webhelp/components" class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="https://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo.png" alt=" RTOS SDK 使用指南 SDK 指南文件 "/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"> <span class="ph mainbooktitle">RTOS SDK 使用指南</span> <span class="ph booktitlealt">SDK 指南文件</span> </span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div></div>
</div>
</header>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "><ol class="d-print-none"><li><span class="home"><a href="../../../index.html"><span>主页</span></a></span></li><li><div class="topicref" data-id="concept_rcx_czh_pzb"><div class="title"><a href="../../../topics/sdk/chapter-app.html">应用场景</a><div class="wh-tooltip"><p class="shortdesc">描述了 SDK 在不同应用场景中的配置和使用包括系统更新、OTA、安全方案等。</p></div></div></div></li><li class="active"><div class="topicref" data-id="backtrace"><div class="title"><a href="../../../topics/sdk/app/backtrace.html">Backtrace 栈回溯</a></div></div></li></ol></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_navigation_links "><span id="topic_navigation_links" class="navheader">
<span class="navprev"><a class="- topic/link link" href="../../../topics/sdk/app/usb-display-tp-calibrate_windows.html" title="在 Windows 中校准触摸屏" aria-label="上一主题: 在 Windows 中校准触摸屏" rel="prev"></a></span>
<span class="navnext"><a class="- topic/link link" href="../../../topics/sdk/peripheral/peripheral-intro.html" title="外设移植" aria-label="下一主题: 外设移植" rel="next"></a></span> </span></div>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
<button type="button" id="wh_toc_button" class="custom-toggler navbar-toggler collapsed wh_toggle_button navbar-light" aria-expanded="false" aria-label="Toggle publishing table of content" aria-controls="wh_publication_toc">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<nav id="wh_publication_toc" class="col-lg-3 col-md-3 col-sm-12 d-md-block d-none d-print-none" aria-label="Table of Contents Container">
<div id="wh_publication_toc_content">
<div class=" wh_publication_toc " data-tooltip-position="right"><span class="expand-button-action-labels"><span id="button-expand-action" role="button" aria-label="Expand"></span><span id="button-collapse-action" role="button" aria-label="Collapse"></span><span id="button-pending-action" role="button" aria-label="Pending"></span></span><ul role="tree" aria-label="Table of Contents"><li role="treeitem"><div data-tocid="revinfo_linux-d3752e463" class="topicref" data-id="revinfo_linux" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/revinfo/revinfo_rtos.html" id="revinfo_linux-d3752e463-link">修订记录</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e480" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e480-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/env/sdk-compile.html" id="id-d3752e480-link">SDK 编译</a><div class="wh-tooltip"><p class="shortdesc">介绍不同编译环境下 SDK 的详细编译流程。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e604" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e604-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/advanced/sdk-usage.html" id="id-d3752e604-link">使用指南</a><div class="wh-tooltip"><p class="shortdesc">命令详解,编译选项,镜像和分区配置,添加应用和驱动等的详细使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="concept_rcx_czh_pzb-d3752e1004" class="topicref" data-id="concept_rcx_czh_pzb" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action concept_rcx_czh_pzb-d3752e1004-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-app.html" id="concept_rcx_czh_pzb-d3752e1004-link">应用场景</a><div class="wh-tooltip"><p class="shortdesc">描述了 SDK 在不同应用场景中的配置和使用包括系统更新、OTA、安全方案等。</p></div></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem"><div data-tocid="id-d3752e1021" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/usb/udisk.html" id="id-d3752e1021-link">挂载 U 盘 </a></div></div></li><li role="treeitem"><div data-tocid="id-d3752e1035" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/sdmc/sdcard.html" id="id-d3752e1035-link">挂载 SD 卡</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1049" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1049-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burnsys_user_guide.html" id="id-d3752e1049-link">系统更新</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1163" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1163-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/ota/ota_guide.html" id="id-d3752e1163-link">OTA 方案</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1283" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1283-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/xip/xip_user_guide.html" id="id-d3752e1283-link">XIP 方案 </a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1372" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1372-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/dm.html" id="id-d3752e1372-link">动态加载 (DM-APP)</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1442" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1442-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/secure/chapter-secure.html" id="id-d3752e1442-link">安全方案</a></div></div></li><li role="treeitem"><div data-tocid="mkfs_partition_image-d3752e1636" class="topicref" data-id="mkfs_partition_image" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/mkfs_partition_image.html" id="mkfs_partition_image-d3752e1636-link">制作分区镜像</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1650" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1650-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burner_offline_lite.html" id="id-d3752e1650-link">离线烧录</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="usb_display-d3752e1706" class="topicref" data-id="usb_display" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action usb_display-d3752e1706-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/usb-display.html" id="usb_display-d3752e1706-link">USB Display 方案</a></div></div></li><li role="treeitem" class="active"><div data-tocid="backtrace-d3752e1833" class="topicref" data-id="backtrace" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/backtrace.html" id="backtrace-d3752e1833-link">Backtrace 栈回溯</a></div></div></li></ul></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1848" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1848-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/peripheral/peripheral-intro.html" id="id-d3752e1848-link">外设移植</a><div class="wh-tooltip"><p class="shortdesc"><span class="ph">CTP、U 盘、SD 卡、有线和无线网络</span>等外设的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e2022" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e2022-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/bringup/chapter-bringup.html" id="id-d3752e2022-link">BringUp</a><div class="wh-tooltip"><p class="shortdesc">主要描述板卡的各项配置,使 SDK 的环境和板卡匹配,并确保 SDK 编译后的固件能够在板子上正常运行。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e2418" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e2418-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-advanced-app.html" id="id-d3752e2418-link">高级应用</a><div class="wh-tooltip"><p class="shortdesc">系统、存储、多媒体、接口、安全等模块的详细配置和设计说明。</p></div></div></div></li></ul></div>
</div>
</nav>
<div class="col-lg-7 col-md-9 col-sm-12" id="wh_topic_body">
<button id="wh_close_publication_toc_button" class="close-toc-button d-none" aria-label="Toggle publishing table of content" aria-controls="wh_publication_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<button id="wh_close_topic_toc_button" class="close-toc-button d-none" aria-label="Toggle topic table of content" aria-controls="wh_topic_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic topic" role="article" aria-labelledby="ariaid-title1">
<span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://aicdocco/taskstopics/sdk/app/backtrace.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">Backtrace 栈回溯</h1>
<div class="date inPage">16 May 2025</div><div style="color: gray;">
Read time: 4 minute(s)
</div>
<div class="- topic/body body">
<p class="- topic/p p" data-ofbid="d115900e31__20250519091517">Luban-Lite 提供 Backtrace
及解析功能,便于开发者准确定位软件调试中出现的系统崩溃问题,例如内存访问越界。在系统创建线程时,会分配栈内存空间,通过分析运行时栈内存的结构,逐层解析函数调用的历史记录,从而定位出软件异常的问题点。</p>
<div class="- topic/p p" data-ofbid="d115900e34__20250519091517">本节适用于以下芯片系列:<ul class="- topic/ul ul" id="backtrace__ul_awd_1zw_52c" data-ofbid="backtrace__ul_awd_1zw_52c">
<li class="- topic/li li" data-ofbid="d115900e38__20250519091517">D21x</li>
<li class="- topic/li li" data-ofbid="d115900e41__20250519091517">D13x</li>
<li class="- topic/li li" data-ofbid="d115900e44__20250519091517">D12x</li>
<li class="- topic/li li" data-ofbid="d115900e47__20250519091517">G73x</li>
</ul></div>
<p class="- topic/p p" data-ofbid="d115900e51__20250519091517">栈回溯功能的相关工具均已包含在最新 SDK 中,确保已更新至最新的 SDK。</p>
<div class="- topic/note note note note_note" id="backtrace__note_pbr_xyw_52c" data-ofbid="backtrace__note_pbr_xyw_52c"><span class="note__title">注:</span> 在 Luban-Lite 中Backtrace 及解析功能仅用于调试 RT-Thread 的多线程,无法用于调试
BootLoader。</div>
<section class="- topic/section section" id="backtrace__section_mms_zzw_52c" data-ofbid="backtrace__section_mms_zzw_52c"><h2 class="- topic/title title sectiontitle">Backtrace 配置方法</h2>
<div class="- topic/p p" data-ofbid="d115900e62__20250519091517">在 menuconfig 中开启 Backtrace debug
功能,并修改编译链接脚本以支持栈回溯,以便在发生系统异常时打印出函数调用地址。详细配置流程如下所示:<div class="- topic/note note note note_note" id="backtrace__note_jgr_tgg_y2c" data-ofbid="backtrace__note_jgr_tgg_y2c"><span class="note__title">注:</span> 为避免量产软件的性能受影响,确保在量产软件中关闭 backtrace。</div><ol class="- topic/ol ol" id="backtrace__ol_bh1_xzw_52c" data-ofbid="backtrace__ol_bh1_xzw_52c">
<li class="- topic/li li" data-ofbid="d115900e68__20250519091517">在 SDK 的 menuconfig 功能配置界面,选择项目的 RT-Thread 配置页,并打开 Backtrace
调试功能:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_dh1_xzw_52c" data-ofbid="backtrace__codeblock_dh1_xzw_52c"> Drivers options ---&gt;
Drivers debug
[*] Enable Backtrace debug</pre></li>
<li class="- topic/li li" data-ofbid="d115900e73__20250519091517">保存并退出配置界面。</li>
<li class="- topic/li li" data-ofbid="d115900e76__20250519091517">修改编译链接脚本以支持栈回溯: <ul class="- topic/ul ul" id="backtrace__ul_fh1_xzw_52c" data-ofbid="backtrace__ul_fh1_xzw_52c">
<li class="- topic/li li" data-ofbid="d115900e80__20250519091517">在项目对应芯片目录中打开编译链接脚本,例如
<span class="+ topic/ph sw-d/filepath ph filepath">D12x/bsp/artinchip/sys/d21x/rtconfig.py</span></li>
<li class="- topic/li li" data-ofbid="d115900e86__20250519091517">将 BACKTRACE = False 修改为 BACKTRACE = True</li>
</ul><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_hh1_xzw_52c" data-ofbid="backtrace__codeblock_hh1_xzw_52c">...
# BACKTRACE = True
BACKTRACE = False
...</pre></li>
<li class="- topic/li li" data-ofbid="d115900e92__20250519091517">保存文件并关闭编辑器。</li>
</ol></div>
</section>
<section class="- topic/section section" id="backtrace__section_ih1_xzw_52c" data-ofbid="backtrace__section_ih1_xzw_52c"><h2 class="- topic/title title sectiontitle">实例分析</h2>
<p class="- topic/p p" data-ofbid="d115900e103__20250519091517">以下是一个制造非法内存访问的示例代码,用于演示如何生成和解析栈回溯信息:</p>
<ol class="- topic/ol ol" id="backtrace__ol_jh1_xzw_52c" data-ofbid="backtrace__ol_jh1_xzw_52c">
<li class="- topic/li li" data-ofbid="d115900e108__20250519091517">在 SDK 中加入下列代码进行编译、烧录:<div class="- topic/note note note note_note" id="backtrace__note_mss_2bx_52c" data-ofbid="backtrace__note_mss_2bx_52c"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d115900e112__20250519091517">如需使用栈回溯,务必保证镜像和生成的 elf 文件对应,即编译一次、烧录一次、分析一次。</p>
</div><p class="- topic/p p" data-ofbid="d115900e115__20250519091517">此段代码尝试写入一个空指针地址,导致存储访问故障。</p><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_lh1_xzw_52c" data-ofbid="backtrace__codeblock_lh1_xzw_52c"><strong class="hl-keyword">int</strong> stack_protector_test(<strong class="hl-keyword">int</strong> argc, <strong class="hl-keyword">char</strong> **argv)
{
<strong class="hl-keyword">int</strong> * p = NULL;
p = (<strong class="hl-keyword">int</strong> *)<span class="hl-number">0x80000000</span>;
*p = <span class="hl-number">0x12345678</span>;
value = *p;
printf(<span class="hl-string">"addr:%p value:0x%08X\r
</span><span class="hl-string">", p, value);
</span> <strong class="hl-keyword">return</strong> <span class="hl-number">0</span>;
}
MSH_CMD_EXPORT(stack_protector_test test stack protector test test test test)
</pre></li>
<li class="- topic/li li" data-ofbid="d115900e120__20250519091517">
<div class="- topic/p p" data-ofbid="d115900e122__20250519091517">系统运行后,执行下列命令,并观察串口终端输出的错误信息和堆栈回溯:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_oh1_xzw_52c" data-ofbid="backtrace__codeblock_oh1_xzw_52c">stack_protector_test</pre></div>
<div class="- topic/p p" data-ofbid="d115900e127__20250519091517">串口终端的系统输出示例如下所示:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_qxy_h1x_52c" data-ofbid="backtrace__codeblock_qxy_h1x_52c">CPU Exception: NO.<span class="hl-number">7</span>
x1: <span class="hl-number">4002</span>bf64 x2: <span class="hl-number">30066270</span> x3: <span class="hl-number">30042</span>d8c x4: deadbeef
x5: <span class="hl-number">80007880</span> x6: <span class="hl-number">300662</span>b4 x7: deadbeef x8: <span class="hl-number">00000014</span>
x9: <span class="hl-number">30064212</span> x10: <span class="hl-number">00000001</span> x11: <span class="hl-number">80000000</span> x12: <span class="hl-number">12345678</span>
x13: <span class="hl-number">00000000</span> x14: <span class="hl-number">30064226</span> x15: <span class="hl-number">80000000</span> x16: <span class="hl-number">30064226</span>
x17: fffffffd x18: <span class="hl-number">400461</span>ae x19: <span class="hl-number">400</span>bddf8 x20: <span class="hl-number">40155f</span>b8
x21: <span class="hl-number">400</span>bdf30 x22: <span class="hl-number">0000007f</span> x23: <span class="hl-number">30044</span>d04 x24: <span class="hl-number">20636961</span>
x25: <span class="hl-number">400</span>c45d4 x26: <span class="hl-number">300641</span>c2 x27: <span class="hl-number">30064212</span> x28: <span class="hl-number">00000022</span>
x29: <span class="hl-number">0000005</span>c x30: <span class="hl-number">0000000</span>a x31: deadbeef
mcause : <span class="hl-number">0x38000007</span>
mtval : <span class="hl-number">0x00000000</span>
mepc : <span class="hl-number">0x400461c4</span>
mstatus: <span class="hl-number">0x80007880</span>
__stext:<span class="hl-number">0x40000000</span> __etext:<span class="hl-number">0x400bdfe0</span>,stack:
stack_addr:<span class="hl-number">0x30064330</span> stack_addr_end:<span class="hl-number">0x30066330</span>
<span class="hl-number">0x0000007f</span> <span class="hl-number">0x00000009</span> <span class="hl-number">0x400c45c8</span> <span class="hl-number">0x4002bf64</span>
<span class="hl-number">0x0000001b</span> <span class="hl-number">0x30044d8c</span> <span class="hl-number">0x30064212</span> <span class="hl-number">0x00000000</span>
<span class="hl-number">0x00000000</span> <span class="hl-number">0x00000000</span> <span class="hl-number">0x00000000</span> <span class="hl-number">0x00000000</span>
<span class="hl-number">0x00000000</span> <span class="hl-number">0x00000000</span> <span class="hl-number">0x00000000</span> <span class="hl-number">0x00000000</span>
<span class="hl-number">0x0000007f</span> <span class="hl-number">0x00000009</span> <span class="hl-number">0x400c45c8</span> <span class="hl-number">0x000000fd</span>
<span class="hl-number">0x0000001b</span> <span class="hl-number">0x30044d8c</span> <span class="hl-number">0x30064190</span> <span class="hl-number">0x4002b9c0</span>
<span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0x00000000</span> <span class="hl-number">0x30064190</span>
<span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0x0dadbeef</span>
<span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span>
<span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span>
<span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span>
<span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0xdeadbeef</span> <span class="hl-number">0x4001a874</span>
[backtrace_call_stack:<span class="hl-number">123</span>]__stext:<span class="hl-number">0x40000000</span> __etext:<span class="hl-number">0x400bdfe0</span>
<span class="hl-number">0x400461c4</span>
<span class="hl-number">0x4002bf64</span>
<span class="hl-number">0x4002b9c0</span>
<span class="hl-number">0x4001a874</span></pre></div>
</li>
<li class="- topic/li li" data-ofbid="d115900e133__20250519091517">
<p class="- topic/p p" data-ofbid="d115900e135__20250519091517">将串口终端的输出信息保存为 <span class="+ topic/ph sw-d/filepath ph filepath">txt</span> 文本,并使用
<span class="+ topic/ph sw-d/filepath ph filepath">panic_parse.py</span> 进行解析。</p>
<div class="- topic/p p" data-ofbid="d115900e144__20250519091517">假设 backtrace 信息保存在根目录中,保存的输出示例 <span class="+ topic/ph sw-d/filepath ph filepath">txt</span>文件为
<span class="+ topic/ph sw-d/filepath ph filepath">kunlunpi-panic.txt</span>,则在 SDK
根目录执行如下操作命令:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_tb2_51x_52c" data-ofbid="backtrace__codeblock_tb2_51x_52c">python3 tools/scripts/panic_parse.py -l ./kunlunpi-panic.txt</pre></div>
</li>
<li class="- topic/li li" data-ofbid="d115900e156__20250519091517">查看解析后的输出,确定导致异常的具体函数位置。<div class="- topic/p p" data-ofbid="d115900e158__20250519091517">解析结果示例如下,分析文件指明了函数调用的关系和导致异常的函数具体位置:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="backtrace__codeblock_qh1_xzw_52c" data-ofbid="backtrace__codeblock_qh1_xzw_52c">CPU: RISC-V
ELF: output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/d13x.elf
Toolchain: riscv64-unknown-elf
Text section: <span class="hl-number">0x40000000</span> - <span class="hl-number">0x400bdfe0</span>, size: <span class="hl-number">778208</span> Bytes
---------------------------------------------------------------
CPU Registers:
---------------------------------------------------------------
CPU Exception: <span class="hl-number">7</span> (Store/AMO Access Fault)
x1 (ra): <span class="hl-number">0x4002bf64</span> _msh_exec_cmd at kernel/rt-thread/components/finsh/msh.c:<span class="hl-number">294</span>
x2 (sp): <span class="hl-number">0x30066270</span>
x3 (gp): <span class="hl-number">0x30042d8c</span>
x4 (tp): <span class="hl-number">0xdeadbeef</span>
x5 (t0): <span class="hl-number">0x80007880</span>
x6 (t1): <span class="hl-number">0x300662b4</span>
x7 (t2): <span class="hl-number">0xdeadbeef</span>
x8 (s0/fp): <span class="hl-number">0x00000014</span>
x9 (s1): <span class="hl-number">0x30064212</span>
x10 (a0): <span class="hl-number">0x00000001</span>
x11 (a1): <span class="hl-number">0x80000000</span>
x12 (a2): <span class="hl-number">0x12345678</span>
x13 (a3): <span class="hl-number">0x00000000</span>
x14 (a4): <span class="hl-number">0x30064226</span>
x15 (a5): <span class="hl-number">0x80000000</span>
x16 (a6): <span class="hl-number">0x30064226</span>
x17 (a7): <span class="hl-number">0xfffffffd</span>
x18 (s2): <span class="hl-number">0x400461ae</span> stack_protector_test at packages/artinchip/lvgl-ui/aic_ui.c:<span class="hl-number">64</span>
x19 (s3): <span class="hl-number">0x400bddf8</span> __console_init_start at ??:?
x20 (s4): <span class="hl-number">0x40155fb8</span>
x21 (s5): <span class="hl-number">0x400bdf30</span> __fsymtab_end at ??:?
x22 (s6): <span class="hl-number">0x0000007f</span>
x23 (s7): <span class="hl-number">0x30044d04</span>
x24 (s8): <span class="hl-number">0x20636961</span>
x25 (s9): <span class="hl-number">0x400c45d4</span>
x26 (s10): <span class="hl-number">0x300641c2</span>
x27 (s11): <span class="hl-number">0x30064212</span>
x28 (t3): <span class="hl-number">0x00000022</span>
x29 (t4): <span class="hl-number">0x0000005c</span>
x30 (t5): <span class="hl-number">0x0000000a</span>
x31 (t6): <span class="hl-number">0xdeadbeef</span>
mcause: <span class="hl-number">0x00000000</span>
mtval: <span class="hl-number">0x00000000</span>
mepc: <span class="hl-number">0x00000000</span>
mstatus: <span class="hl-number">0x00000000</span>
---------------------------------------------------------------
Call Stack:
---------------------------------------------------------------
Stack section: <span class="hl-number">0x30064330</span> - <span class="hl-number">0x30066330</span>, size: <span class="hl-number">8192</span> Bytes
<span class="hl-number">0</span>: [<span class="hl-number">0x4002bf64</span>] _msh_exec_cmd at kernel/rt-thread/components/finsh/msh.c:<span class="hl-number">294</span>
<span class="hl-number">1</span>: [<span class="hl-number">0x4002b9c0</span>] finsh_thread_entry at kernel/rt-thread/components/finsh/shell.c:<span class="hl-number">657</span>
<span class="hl-number">2</span>: [<span class="hl-number">0x4001a874</span>] _thread_exit at kernel/rt-thread/src/thread.c:<span class="hl-number">91</span></pre></div></li>
</ol>
</section>
</div>
</article></main></div>
</div>
<nav role="navigation" id="wh_topic_toc" aria-label="On this page" class="col-lg-2 d-none d-lg-block navbar d-print-none">
<div id="wh_topic_toc_content">
<div class=" wh_topic_toc "><div class="wh_topic_label">在本页上</div><ul><li class="section-item"><div class="section-title"><a href="#backtrace__section_mms_zzw_52c" data-tocid="backtrace__section_mms_zzw_52c">Backtrace 配置方法</a></div></li><li class="section-item"><div class="section-title"><a href="#backtrace__section_ih1_xzw_52c" data-tocid="backtrace__section_ih1_xzw_52c">实例分析</a></div></li></ul></div>
</div>
</nav>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style>
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
</style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2025 广东匠芯创科技有限公司. All rights reserved.</p>
</div>
<div>
<div class="generation_time">
Update Time: 2025-05-19
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>