# 调试

要对应用程序进行性能分析，可使用 Snapdragon Profiler 和内核命令。这里介绍了使用内核命令进行分析和调试所需信息的收集步骤，以及收集日志。

Note

应谨慎使用本指南介绍的命令，因为这些命令可能会影响设备的功耗。

## 采集 Weston/Wayland 日志

要捕获 Weston/Wayland 调试日志，可在启动 Weston 或任何其他程序前运行以下命令：

export WAYLAND_DEBUG=server/client
    Copy to clipboard

## 内核/KGSL

在调试内核或 KGSL 之前，请使用以下命令重新挂载文件系统：

mount -o remount,rw /
    Copy to clipboard

### 将 CPU 设置为性能模式

1. 要设置所有 CPU 内核，请将 `cpux` 替换为 `cpu0`、`cpu1` 和 `cpun`。

echo 1 > /sys/devices/system/cpu/[cpux]/online
        Copy to clipboard

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
        Copy to clipboard

    示例输出：

ondemand userspace performance schedutil
2. 如果任何 CPU 时钟运行频率较低，请将 CPU 设置为性能模式并通过运行以下命令验证问题：

echo performance > /sys/devices/system/cpu/[cpux]/cpufreq/scaling_governor
        Copy to clipboard
3. 要验证试用设置，请运行以下命令：

cat /sys/devices/system/cpu/[cpux]/online (cpux : cpu0,cpu1 …)
        Copy to clipboard

cat /sys/devices/system/cpu/[cpux]/cpufreq/scaling_governor(cpux : cpu0, cpu1 …)
        Copy to clipboard

### 设置 GPU 频率

1. 关于功率级别，请检查 `available_frequencies` sys 节点。

cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
        Copy to clipboard

    示例输出：

812000000 700000000 608000000 550000000 450000000 315000000

    通过示例输出，GPU power level 解析如下：

    | **频率** | 812000000 | 700000000 | 608000000 | 550000000 | 450000000 | 315000000 |
    | --- | --- | --- | --- | --- | --- | --- |
    | **Power level** | 0 | 1 | 2 | 3 | 4 | 5 |
2. 将以下命令中的 `<level>` 依次替换为 0、1、2、3、4 等值，逐级增加 GPU power level 并执行 GPU power level 测试：

echo <level> > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
        Copy to clipboard

echo <level> > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
        Copy to clipboard

Note

对于 QCS5430：

- Adreno GPU 频率固定为 315 MHz。
- 不支持此处指定的功率级别，`available_frequencies` 命令的输出显示 315000000。

### 将 GPU 设置为性能模式

- 要将 GPU 设置为性能模式，可运行以下命令：

echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
        Copy to clipboard

echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
        Copy to clipboard

Note

这些命令将强制 GPU 始终以最大频率运行。
- 运行以下命令，以确保即使设备空闲时间达到 10000000 ms，GPU 也不会进入低功耗状态。

echo 10000000 > /sys/class/kgsl/kgsl-3d0/idle_timer
        Copy to clipboard
- 要将 GPU 设置为性能模式，同时确保 GPU 不会进入低功耗状态，可运行以下命令：

echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
        Copy to clipboard

echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
        Copy to clipboard

echo 10000000 > /sys/class/kgsl/kgsl-3d0/idle_timer
        Copy to clipboard

Note

QCS5430 不支持性能模式，因为 Adreno GPU 的频率固定为 315 MHz。

### 检查其他 KGSL 设置

- 要启用 KGSL 时钟，可运行以下命令：

echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on
        Copy to clipboard
- 要启用 KGSL rail，可运行以下命令：

echo 1 > /sys/class/kgsl/kgsl-3d0/force_rail_on
        Copy to clipboard
- 要启用 KGSL 总线，可运行以下命令：

echo 1 > /sys/class/kgsl/kgsl-3d0/force_bus_on
        Copy to clipboard

## 基于 OpenGL ES 的应用程序

Snapdragon Profiler 工具用于捕获 OpenGL ES 应用程序的快照并进行实时跟踪。有关更多信息，请参阅 [Snapdragon Profiler](https://docs.qualcomm.com/doc/80-70017-19SC/topic/graphics_developer_tools.html#section-mwq-r4x-31c)。

## 基于 OpenCL 的应用程序

Snapdragon Profiler工具用于捕获 OpenCL 应用程序的快照并进行实时跟踪。

- 有关更多信息，请参阅 [Snapdragon Profiler](https://docs.qualcomm.com/doc/80-70017-19SC/topic/graphics_developer_tools.html#section-mwq-r4x-31c)。
- 关于性能分析，请参阅 [Qualcomm® Snapdragon™ Mobile Platform OpenCL General Programming and Optimization Guide](https://docs.qualcomm.com/bundle/publicresource/80-NB295-11_REV_C_Qualcomm_Snapdragon_Mobile_Platform_Opencl_General_Programming_and_Optimization.pdf) 中的 **Performance profiling**。

Note

[Qualcomm® Snapdragon™ Mobile Platform OpenCL General Programming and Optimization Guide](https://docs.qualcomm.com/bundle/publicresource/80-NB295-11_REV_C_Qualcomm_Snapdragon_Mobile_Platform_Opencl_General_Programming_and_Optimization.pdf) 中的某些章节的内容仅适用于 Android 平台，不适用于 Qualcomm Linux 设备。但是，一些分析选项纯粹基于 OpenCL API，因此在 Qualcomm Linux 设备上受支持。例如，`clGetEventProfilingInfo` API。

## 基于 Vulkan 的应用程序

Snapdragon Profiler 工具用于捕获 Vulkan 应用程序的快照并进行实时跟踪。有关更多信息，请参阅 [Snapdragon Profiler](https://docs.qualcomm.com/doc/80-70017-19SC/topic/graphics_developer_tools.html#section-mwq-r4x-31c)。除了 Snapdragon Profiler 之外，您还可以使用验证层来调试 Vulkan 应用程序。

请在 Linux 主机上执行以下操作，以便使用验证层调试 Vulkan 应用程序：

1. 请运行以下命令，以便设置源环境：

source <path-to-installed-platform-eSDK>/environment-setup-armv8-2a-qcom-linux
        Copy to clipboard
2. 请运行以下命令，以便下载验证层：

git clone https://github.com/KhronosGroup/Vulkan-ValidationLayers
        Copy to clipboard
3. 要编译验证层，请运行以下命令：

cmake -S . -B build -D UPDATE_DEPS=ON -D BUILD_WSI_XLIB_SUPPORT=OFF -D BUILD_TESTS=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_WSI_XCB_SUPPORT=OFF -D BUILD_WSI_WAYLAND_SUPPORT=ON
        Copy to clipboard

cmake --build build --config Debug
        Copy to clipboard

scp -r build/layers/libVkLayer_khronos_validation.so root@[IP-address-of-device]:/tmp/local/debug/vulkan/
        Copy to clipboard

scp -r build/layers/VkLayer_khronos_validation.json root@[IP-address-of-device]:/tmp/local/debug/vulkan/
        Copy to clipboard

export VK_LAYER_PATH=/tmp/local/debug/vulkan:$VK_LAYER_PATH
        Copy to clipboard

Note

如果 `/tmp/local/debug/vulkan` 目录不可用，请创建一个类似目录。
4. 要在 Vulkan 应用程序上启用验证层，请设置 `VK_INSTANCE_LAYERS` 环境变量，如下所示：

export VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation
        Copy to clipboard
5. 要编辑或附加 `layers/vk_layer_settings.txt` 文件中的设置，请运行以下命令：

khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
        Copy to clipboard

khronos_validation.report_flags = error,warn,perf
        Copy to clipboard

khronos_validation.file = true
        Copy to clipboard

khronos_validation.log_filename = vk_validatedump.txt
        Copy to clipboard
6. 请运行以下命令，以便将 `layers/vk_layer_settings.txt` 文件推送至设备：

scp -r vk_layer_settings.txt root@[IP-address-of-device]:/tmp/local/debug/vulkan/
        Copy to clipboard
7. 要 dump 日志，请通过运行以下命令添加验证层的路径：

export VK_LAYER_SETTINGS_PATH=/tmp/local/debug/vulkan/vk_layer_settings.txt
        Copy to clipboard

    Dump 将在 Vulkan 应用程序二进制文件的推送目录中生成。

Note

为了避免 `tmp` 目录中的数据刷新，请将 Vulkan 应用程序二进制文件保存到另一个位置。如果更改二进制文件的位置，请确保相应地更新环境变量并在重新启动后验证更改。

Last Published: Jan 23, 2025

[Previous Topic
工具](https://docs.qualcomm.com/bundle/publicresource/80-70017-19SC/topics/graphics_developer_tools.md) [Next Topic
支持的扩展](https://docs.qualcomm.com/bundle/publicresource/80-70017-19SC/topics/supported_extensions.md)