# 調試

此信息解釋了如何自定義基於 Yocto 的工作區，並解決一般問題和問題。

## 驗證 QDL 和 ModemManager

如果您使用的是帶有 `systemd` 的 Linux 發行版，請使用 `systemctl` 命令停止 `ModemManager`。以下是來自 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
        Copy to clipboard

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
        Copy to clipboard
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)
        Copy to clipboard
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
        Copy to clipboard

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
        Copy to clipboard

## 驗證新添加的層是否從構建中排除

如果 BitBake 沒有解析新添加的層，則該層中的配方不會包含在映像中。運行以下命令，並驗證您是否在輸出中看到該層：

bitbake -e | grep ^BBLAYERS=
    Copy to clipboard

如果找不到該層，請確認 `conf/bblayers.conf` 檔案的內容，以確保該層包含在此處：

# 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 問題：版本倒退

當使用相同的工作區進行 `base` 和 `custom` 構建時，您可以觀察到以下簽名：

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` 層中的 `custom` 配方變體。例如，`wpa_supplicant` 配方的版本設置為 `2.10.qcom` 。版本中的 `.qcom` 表示這些配方構建的源樹與 `poky/meta/recipes-connectivity` 中的配方不同。

當您在構建 `custom` 變體後構建 `base` 變體時，BitBake 構建系統偵測到版本從 `wpa-supplicant_2.10` 回退到 `wpa-supplicant-2.10.qcom`。BitBake 警告說，如果您使用它來創建包提要，此回歸可能會導致問題。

為避免此 QA 問題或設置包提要而無問題，請執行以下任一操作：

- 為 `base` 和 `custom` 構建變體創建不同的工作區。
- 在同一工作區中，創建單獨的構建目錄，如下所示：

    | 對於構建變體 | 創建構建目錄的命令 | 創建構建目錄 |
    | --- | --- | --- |
    | `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/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/build-qcom-wayland-custom/` |

Last Published: Jul 30, 2025

[Previous Topic
使用者自訂](https://docs.qualcomm.com/bundle/publicresource/80-70018-27TC/topics/user_customizations.md) [Next Topic
參考資料](https://docs.qualcomm.com/bundle/publicresource/80-70018-27TC/topics/references.md)