# 调试

本信息介绍了如何自定义基于Yocto的
工作区，以及如何解决常规的问题。

## QDL和ModemManager

如果您使用的是带有 `systemd` 的Linux发行版， `ModemManager` 可以通过使用 `systemctl` 得到停止。以下是来自
Ubuntu 22.04：

1. 若要验证 `ModemManager` 状态，请运行以下命令：

systemctl status ModemManager
        Copy to clipboard

ModemManager.service - Modem Manager

Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor preset: enabled)

Active: active (running) since Tue 2023-11-28 16:28:15 IST; 3 months 4 days ago

Main PID: 1338 (ModemManager)

Tasks: 3 (limit: 4915)

CGroup: /system.slice/ModemManager.service

└─1338 /usr/sbin/ModemManager –filter-policy=strict

ps aux | grep -i modemmanager
        Copy to clipboard

root      1338  0.0  0.0 434332  9544 ?        Ssl   2023 10：39 /usr/sbin/ModemManager –filter-policy=strict
2. 要停止 `ModemManager`，请运行以下命令：

systemctl stop ModemManager
        systemctl status ModemManager
        Copy to clipboard

ModemManager.service - Modem Manager

Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor preset: enabled)

Active: inactive (dead) since Sun 2024-03-03 20:08:32 IST; 4s ago

Process: 1338 ExecStart=/usr/sbin/ModemManager –filter-policy=strict (code=exited, status=0/SUCCESS)

Main PID: 1338 (code=exited, status=0/SUCCESS)
3. 该 `ps aux` 命令不显示任何条目
`/usr/sbin/ModemManager`.如果需要 `ModemManager`，则必须在
闪烁完成后重新启动，并验证它是否已
开始：

systemctl start ModemManager
        systemctl status ModemManager
        Copy to clipboard

ModemManager.service - Modem Manager

Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2024-03-03 20:11:46 IST; 43s ago

Main PID: 14785 (ModemManager)

Tasks: 3 (limit: 4915)

CGroup: /system.slice/ModemManager.service

└─14785 /usr/sbin/ModemManager –filter-policy=strict

ps aux | grep -i modemmanager
        Copy to clipboard

root     14785  4.6  0.0 434332  9160 ?        Ssl  20:11   0：00 /usr/sbin/ModemManager –filter-policy=strict

## 新添加的layer被编译版本排除

如果您无法将来自新添加layer的配方列入镜像中，则很可能是BitBake
没有解析该layer。运行以下命令，并验证是否在输出中看到该layer：

bitbake -e | grep ^BBLAYERS=
    Copy to clipboard

如果找不到layer，请确认
`conf/bblayers.conf` 文件内容，以确保layer包含在以下位置：

# These layers hold recipe metadata not found in OE-core, but lack any machine or distro content
    BASELAYERS ?= " \
      ${WORKSPACE}/layers/meta-openembedded/meta-oe \
      ${WORKSPACE}/layers/meta-openembedded/meta-filesystems \
      ${WORKSPACE}/layers/meta-openembedded/meta-networking \
      ${WORKSPACE}/layers/meta-openembedded/meta-perl \
      ${WORKSPACE}/layers/meta-openembedded/meta-python \
      ${WORKSPACE}/layers/meta-openembedded/meta-gnome \
      ${WORKSPACE}/layers/poky/meta \
      ${WORKSPACE}/layers/poky/meta-poky \
      ${WORKSPACE}/layers/meta-security \
      ${WORKSPACE}/layers/meta-selinux \
      ${WORKSPACE}/layers/meta-virtualization \
    "
    
    # These layers hold machine specific content, aka Board Support Packages
    BSPLAYERS ?= " \
      ${WORKSPACE}/layers/meta-qcom-hwe \
      ${WORKSPACE}/layers/meta-qcom \
    "
    
    # Add your overlay location to EXTRALAYERS
    # Make sure to have a conf/layers.conf in there
    EXTRALAYERS ?= "${WORKSPACE}/layers/meta-qcom-extras"
    
    BBLAYERS = " \
      ${WORKSPACE}/layers/meta-qcom-distro \
      ${EXTRALAYERS} \
      ${BASELAYERS} \
      ${BSPLAYERS} \
    "
    Copy to clipboard

## 质量保证（QA）问题：版本倒退

使用统一的工作区进行 `custom` 和 `base` 生成时，可以观察到以下特征：

ERROR: <package>-<version> do_packagedata_setscene: QA Issue: Package
    version for package wpa-supplicant-src went backwards which would break
    package feeds (from 0:2.10.qcom-r0 to 0:2.10-r0) [version-going-backwards]
    Copy to clipboard

例如：

ERROR: wpa-supplicant-2.10-r0 do_packagedata_setscene: QA Issue: Package
    version for package wpa-supplicant-src went backwards which would break
    package feeds (from 0:2.10.qcom-r0 to 0:2.10-r0) [version-going-backwards]
    Copy to clipboard

此QA问题发生在 `meta-qcom-hwe` layer中的recipe变体 `custom` 上。例如， `wpa_supplicant` recipe的版本设置为 `2.10.qcom`。版本中的 `.qcom` 表示，与 `poky/meta/recipes-connectivity` 中的recipe相比，此配方编译了不同的源代码树。

当您在编译 `custom` 变体后再编译 `base` 变体时，BitBake 编译系统会检测版本是否从 `wpa-supplicant_2.10` 回归到 `wpa-supplicant-2.10.qcom`。
BitBake警告说，如果您将这种回归用于创建包源，可能会导致问题。

若要避免此QA问题或设置包源而不会出现问题，请执行以下任一操作：

- 为 `base` 和  `custom` 变体创建不同的工作区并编译变体。
- 在同一工作区中，创建单独的生成目录，如下所示：

    | Build 变体 | 创建Build目录的命令 | 已创建的Build目录 |
    | --- | --- | --- |
    | `base` | MACHINE=qcs9100-ride-sx DISTRO=qcom-wayland QCOM_SELECTED_BSP=base \<br>        source setup-environment build-qcom-wayland-base<br>        Copy to clipboard | `/<workspace>/Qualcomm_Linux_1.2/build-qcom-wayland-base/` |
    | `custom` | MACHINE=qcs9100-ride-sx DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom \<br>        source setup-environment build-qcom-wayland-custom<br>        Copy to clipboard | `/<workspace>/Qualcomm_Linux_1.2/build-qcom-wayland-custom/` |

Last Published: Dec 15, 2024

[Previous Topic
用户定制](https://docs.qualcomm.com/bundle/publicresource/80-70015-27SC/topics/user_customizations.md) [Next Topic
参考资料](https://docs.qualcomm.com/bundle/publicresource/80-70015-27SC/topics/references.md)