> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 启用内核调试

本节介绍用于诊断系统和性能问题的内核调试功能。

## **启用动态调试**

`debugfs` 文件系统允许您通过在运行时启用日志来调试内核。在验证特定场景时,使用 `debugfs` 文件系统在特定时间启用日志。

默认情况下,动态调试处于禁用状态。要在内核中启用 `debugfs`,请执行以下操作:

1. 启用 `CONFIG_DYNAMIC_DEBUG` 内核配置选项。
2. 重新编译并重新烧录构建。
3. 要挂载 `debugfs` 文件系统,请运行以下命令:
   ```text theme={null}
   mount -o rw,remount /
   ```
   ```text theme={null}
   mount -t debugfs none /sys/kernel/debug
   ```
   1. 通过检查以下路径是否存在来验证是否已启用动态调试:
      ```text theme={null}
      cd /sys/kernel/debug/dynamic_debug
      ```
   2. 如果该目录存在,请验证已定义的日志:
      ```text theme={null}
      cat /sys/kernel/debug/dynamic_debug/control
      ```
4. 为需要调试的文件或函数启用调试日志。
   例如:
   * 要启用 `mdp.c` 文件中的所有 `debugfs` 日志,请运行以下命令:
     ```text theme={null}
     echo 'file mdp.c +p' > /sys/kernel/debug/dynamic_debug/control
     ```
   * 要启用 `mdp.c` 文件中第 2921 行的日志,请运行以下命令:
     ```text theme={null}
     echo 'file mdp.c line 2921 +p' > /sys/kernel/debug/dynamic_debug/control
     ```
5. 使用 `dmesg` 命令验证日志,或运行以下命令:
   ```text theme={null}
   cat /proc/kmsg
   ```
   有关更多信息,请参阅 [Documentation/dynamic-debug-howto.txt](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/dynamic-debug-howto.rst)。

## **启用内核调试选项**

您可以启用内核配置选项来调试各种问题,例如内存泄漏、锁相关问题和 mutex 问题。要查看可用的内核调试选项,请调用 `menuconfig`。有关内核调试选项的更多信息,请参阅[配置内核](https://dragonwingdocs.qualcomm.com/System/Kernel/install-and-boot-the-kernel)

以下是一些调试选项:

Kernel hacking

\[\*] Kernel debugging

\[\*] Detect Soft Lockups

\[ ] Collect scheduler statistics

\[\*] Debug slab memory allocations

\[\*] Memory leak debugging

\[\*] Mutex debugging, deadlock detection

\[\*] Spinlock debugging

\[\*] Sleep-inside-spinlock checking

\[ ] kobject debugging

\[ ] Highmem debugging

\[ ] Compile the kernel with debug info

<Note>
  如果启用这些调试选项中的任何一个,内核速度会略微降低。因此,如果您注意到性能有所下降,请禁用内核调试配置选项。
</Note>
