【问题标题】:what does AOSP lldbclient.py generated lldb script sourceMap key "/b/f/w" mean?AOSP lldbclient.py 生成的 lldb 脚本 sourceMap 键“/b/f/w”是什么意思?
【发布时间】:2021-12-29 21:38:04
【问题描述】:

aosp有一个python脚本lldbclient.py,可以启动lldb服务器,创建codelldb扩展支持的vscode启动配置设置。

这个生成的配置是这样的:

{
    "name": "(lldbclient.py) Attach surfaceflinger (port: 5039)",
    "type": "lldb",
    "request": "custom",
    "relativePathBase": "/mnt/data/zl/aosp_project",
    "sourceMap": {
        "/b/f/w": "/mnt/data/zl/aosp_project",
        "": "/mnt/data/zl/aosp_project",
        ".": "/mnt/data/zl/aosp_project"
    },
    "initCommands": [
        "settings append target.exec-search-paths /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/lib64/ /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/lib64/hw /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/lib64/ssl/engines /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/lib64/drm /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/lib64/egl /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/lib64/soundfx /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/vendor/lib64/ /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/vendor/lib64/hw /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/vendor/lib64/egl /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/apex/com.android.runtime/bin"
    ],
    "targetCreateCommands": [
        "target create /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/system/bin/surfaceflinger",
        "target modules search-paths add / /mnt/data/zl/aosp_project/out/target/product/emulator_x86_64/symbols/"
    ],
    "processCreateCommands": [
        "gdb-remote 5039"
    ],
},

sourceMap部分中的“/b/f/w”是什么意思?

我发现这个sourceMap项导致vscode codelldb设置断点失败。这是因为当我使用 SurfaceFlinger.cpp 等文件在第 1000 行设置断点时,codelldb 将向 lldb 发送命令“b /b/f/w/framework/native/services/surfaceflinger/SurfaceFlinger.cpp:1000”, lldb 找不到这个文件,所以失败了。

目前我只是删除 sourceMap 部分中的 "/b/f/w": "/mnt/data/zl/aosp_project" 来解决这个问题。

我在 lldb 文档中找不到有关“/b/f/w”的任何信息。

【问题讨论】:

    标签: visual-studio-code android-source lldb codelldb


    【解决方案1】:

    lldb“source-map”设置用于调试二进制文件,其中调试机器上的源与构建二进制文件时的位置不同。由于调试信息在构建时记录了源位置,因此 lldb 需要一些帮助才能将这些位置映射到当前位置。详情请见settings list target.source-map。

    我不知道为什么您的项目生成器会添加这些看似虚假的条目。

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2022-01-22
      • 2010-11-19
      • 1970-01-01
      • 2018-11-24
      • 2020-03-03
      • 2015-01-05
      • 2017-02-02
      相关资源
      最近更新 更多