blob: 36f6487186706a54a3b1efa676b63c7f345d8f66 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Debugging &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../_static/sphinx_collapse.css" />
<link rel="stylesheet" type="text/css" href="../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<script src="../_static/jquery.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/clipboard.min.js"></script>
<script src="../_static/copybutton.js"></script>
<script src="../_static/design-tabs.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="GDB with Python" href="gdbwithpython.html" />
<link rel="prev" title="FAQ" href="../faq/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../latest" selected="selected">latest</option>
<option value="../../10.0.0" >10.0.0</option>
<option value="../../10.0.1" >10.0.1</option>
<option value="../../10.1.0" >10.1.0</option>
<option value="../../10.2.0" >10.2.0</option>
<option value="../../10.3.0" >10.3.0</option>
<option value="../../11.0.0" >11.0.0</option>
<option value="../../12.0.0" >12.0.0</option>
<option value="../../12.1.0" >12.1.0</option>
<option value="../../12.2.0" >12.2.0</option>
<option value="../../12.2.1" >12.2.1</option>
<option value="../../12.3.0" >12.3.0</option>
<option value="../../12.4.0" >12.4.0</option>
<option value="../../12.5.0" >12.5.0</option>
<option value="../../12.5.1" >12.5.1</option>
<option value="../../12.6.0" >12.6.0</option>
<option value="../../12.7.0" >12.7.0</option>
<option value="../../12.8.0" >12.8.0</option>
<option value="../../12.9.0" >12.9.0</option>
<option value="../../12.10.0" >12.10.0</option>
<option value="../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../implementation/index.html">Implementation Details</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">FAQ</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Debugging</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gdbwithpython.html">GDB with Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemugdb.html">How to debug NuttX using QEMU and GDB</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html">gdbserver</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html">Debugging ELF Loadable Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
<li class="toctree-l2"><a class="reference internal" href="kasan.html">The Kernel Address Sanitizer (KASAN)</a></li>
<li class="toctree-l2"><a class="reference internal" href="coredump.html">Core Dump</a></li>
<li class="toctree-l2"><a class="reference internal" href="coresight.html">Coresight - HW Assisted Tracing on ARM</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html">Stack Overflow Check</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackrecord.html">Run time stack statistics</a></li>
<li class="toctree-l2"><a class="reference internal" href="disabling_stackdumpdebug.html">Disabling the Stack Dump During Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="debuggingflash_nuttxonarm.html">Debugging / flashing NuttX on ARM with hardware debugger (JTAG/SWD)</a></li>
<li class="toctree-l2"><a class="reference internal" href="cortexmhardfaults.html">Analyzing Cortex-M Hardfaults</a></li>
<li class="toctree-l2"><a class="reference internal" href="mte.html">ATM64 MTE extension</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../standards/index.html">Standards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../logos/index.html">NuttX Logos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../_tags/tagsindex.html">Tags</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Debugging</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/nuttx/blob/master/Documentation/debugging/index.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="debugging">
<h1>Debugging<a class="headerlink" href="#debugging" title="Permalink to this heading"></a></h1>
<p>This page contains a collection of guides on how to debug problems with NuttX.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="gdbwithpython.html">GDB with Python</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gdbwithpython.html#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbwithpython.html#usage">Usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbwithpython.html#how-to-write-a-gdb-python-script">How to write a GDB python script</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbwithpython.html#requirements">Requirements</a><ul>
<li class="toctree-l3"><a class="reference internal" href="gdb/irqinfo.html">irqinfo</a><ul>
<li class="toctree-l4"><a class="reference internal" href="gdb/irqinfo.html#syntax">Syntax</a></li>
<li class="toctree-l4"><a class="reference internal" href="gdb/irqinfo.html#example">Example</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="qemugdb.html">How to debug NuttX using QEMU and GDB</a><ul>
<li class="toctree-l2"><a class="reference internal" href="qemugdb.html#compiling">Compiling</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemugdb.html#start-qemu">Start QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemugdb.html#start-gdb-to-connect-to-qemu">Start GDB to connect to QEMU</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="gdbserver.html">gdbserver</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#usage">Usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#log-example">Log Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#raw-file-example">Raw file Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#coredump-example">Coredump Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#thread-awarenes">Thread awarenes</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdbserver.html#how-to-add-new-architecture">How to add new architecture</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="debugging_elf_loadable_modules.html">Debugging ELF Loadable Modules</a><ul>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html#get-elf-module-load-address">1. Get ELF Module Load Address</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html#make-the-elf-module-wait-for-you">2. Make the ELF Module Wait for You</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html#start-the-debugger">3. Start the Debugger</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html#load-offset-symbols">4. Load Offset Symbols</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html#and-debug">5. And Debug</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging_elf_loadable_modules.html#an-easier-way">An Easier Way?</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="tasktrace.html">Task Trace</a><ul>
<li class="toctree-l2"><a class="reference internal" href="tasktraceuser.html">Task Trace User Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="tasktraceuser.html#installation">Installation</a><ul>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#install-trace-compass">Install Trace Compass</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#nuttx-kernel-configuration">NuttX kernel configuration</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="tasktraceuser.html#how-to-get-trace-data">How to get trace data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#quick-guide">Quick Guide</a><ul>
<li class="toctree-l5"><a class="reference internal" href="tasktraceuser.html#getting-the-trace">Getting the trace</a></li>
<li class="toctree-l5"><a class="reference internal" href="tasktraceuser.html#displaying-the-trace-result">Displaying the trace result</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="tasktraceuser.html#trace-command-description">Trace command description</a><ul>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-start">trace start</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-stop">trace stop</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-cmd">trace cmd</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-dump">trace dump</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-mode">trace mode</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-syscall">trace syscall</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceuser.html#trace-irq">trace irq</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="tasktraceinternal.html">Task Trace Internals</a><ul>
<li class="toctree-l3"><a class="reference internal" href="tasktraceinternal.html#overview">Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#nuttx-kernel-events-collection">NuttX kernel events collection</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#filter-logic-nuttx-sched-sched-note-c">Filter logic (<code class="docutils literal notranslate"><span class="pre">nuttx/sched/sched_note.c</span></code>)</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#noteram-device-driver-nuttx-drivers-note-noteram-driver-c">Noteram device driver (<code class="docutils literal notranslate"><span class="pre">nuttx/drivers/note/noteram_driver.c</span></code>)</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#notectl-device-driver-nuttx-drivers-note-notectl-driver-c">Notectl device driver (<code class="docutils literal notranslate"><span class="pre">nuttx/drivers/note/notectl_driver.c</span></code>)</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#trace-built-in-application-apps-system-trace-trace-c"><code class="docutils literal notranslate"><span class="pre">trace</span></code>” Built-In Application (<code class="docutils literal notranslate"><span class="pre">apps/system/trace/trace.c</span></code>)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="tasktraceinternal.html#getting-the-system-call-events">Getting the system call events</a><ul>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#flat-build">FLAT build</a></li>
<li class="toctree-l4"><a class="reference internal" href="tasktraceinternal.html#protected-kernel-build">PROTECTED/KERNEL build</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="kasan.html">The Kernel Address Sanitizer (KASAN)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="kasan.html#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="kasan.html#support">Support</a><ul>
<li class="toctree-l3"><a class="reference internal" href="kasan.html#architectures">Architectures</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="kasan.html#usage">Usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="kasan.html#implementation-details">Implementation details</a></li>
<li class="toctree-l2"><a class="reference internal" href="kasan.html#for-developers">For developers</a><ul>
<li class="toctree-l3"><a class="reference internal" href="kasan.html#ignoring-accesses">Ignoring accesses</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="coredump.html">Core Dump</a><ul>
<li class="toctree-l2"><a class="reference internal" href="coredump.html#overview">Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="coredump.html#how-to-use">How to use</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="coresight.html">Coresight - HW Assisted Tracing on ARM</a><ul>
<li class="toctree-l2"><a class="reference internal" href="coresight.html#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="coresight.html#acronyms-and-classification">Acronyms and Classification</a></li>
<li class="toctree-l2"><a class="reference internal" href="coresight.html#framework-and-implementation">Framework and implementation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="stackcheck.html">Stack Overflow Check</a><ul>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html#support">Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html#stack-overflow-software-check-during-function-call">Stack Overflow Software Check During Function Call</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html#stack-overflow-software-check-during-context-switching">Stack Overflow Software Check During Context Switching</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html#stack-overflow-hardware-check">Stack Overflow Hardware Check</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackcheck.html#stack-canary-check">Stack Canary Check</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="stackrecord.html">Run time stack statistics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="stackrecord.html#introduce">Introduce</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackrecord.html#configuration">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackrecord.html#example">Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackrecord.html#implementation-details">Implementation details</a></li>
<li class="toctree-l2"><a class="reference internal" href="stackrecord.html#notice">Notice</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="disabling_stackdumpdebug.html">Disabling the Stack Dump During Debugging</a></li>
<li class="toctree-l1"><a class="reference internal" href="debuggingflash_nuttxonarm.html">Debugging / flashing NuttX on ARM with hardware debugger (JTAG/SWD)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="debuggingflash_nuttxonarm.html#what-s-the-problem">What’s the problem?</a></li>
<li class="toctree-l2"><a class="reference internal" href="debuggingflash_nuttxonarm.html#solution">Solution</a><ul>
<li class="toctree-l3"><a class="reference internal" href="debuggingflash_nuttxonarm.html#work-around">Work-around</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="cortexmhardfaults.html">Analyzing Cortex-M Hardfaults</a><ul>
<li class="toctree-l2"><a class="reference internal" href="cortexmhardfaults.html#analyzing-the-register-dump">Analyzing the Register Dump</a></li>
<li class="toctree-l2"><a class="reference internal" href="cortexmhardfaults.html#analyzing-the-stack-dump">Analyzing the Stack Dump</a><ul>
<li class="toctree-l3"><a class="reference internal" href="cortexmhardfaults.html#the-task-stack">The Task Stack</a></li>
<li class="toctree-l3"><a class="reference internal" href="cortexmhardfaults.html#the-interrupt-stack">The Interrupt Stack</a></li>
<li class="toctree-l3"><a class="reference internal" href="cortexmhardfaults.html#full-stack-analysis">Full Stack Analysis</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="cortexmhardfaults.html#recovering-state-at-the-time-of-the-hardfault">Recovering State at the Time of the Hardfault</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mte.html">ATM64 MTE extension</a><ul>
<li class="toctree-l2"><a class="reference internal" href="mte.html#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="mte.html#principle">Principle</a></li>
<li class="toctree-l2"><a class="reference internal" href="mte.html#architectural-details">Architectural Details</a></li>
<li class="toctree-l2"><a class="reference internal" href="mte.html#usage">Usage</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../faq/index.html" class="btn btn-neutral float-left" title="FAQ" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="gdbwithpython.html" class="btn btn-neutral float-right" title="GDB with Python" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>