You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows端LLDB调试Linux编译安卓原生应用时源码路径映射失效问题

问题结论

这不是你的配置错误,是Android NDK r23携带的LLDB 12.0.5版本在Windows平台下的已知路径解析兼容缺陷。

你从settings show target.source-map的输出就能定位到根因:你输入的映射前缀是Linux风格的正斜杠路径"/home/user/src/xxx",但Windows版本的LLDB 12会自动把它转换为Windows风格的反斜杠路径"\home\user\src\xxx"。而你编译生成的二进制调试信息里存储的源码路径是正斜杠开头的/home/user/src/xxx/Sources/xxx/libraries/interfaces/foo.cpp,两个前缀字符串匹配不上,target.source-map规则完全不生效,LLDB才会直接把Linux绝对路径拼到C盘根目录下查找文件,导致加载失败。

GDB的substitute-path实现逻辑里自带了路径分隔符归一化处理,会自动匹配正反斜杠,所以相同规则下可以正常工作。

修复方案

你可以根据自己的场景任选一种:

  • 升级NDK到r24及以上版本:该版本的LLDB已经修复了Windows平台下source-map的路径分隔符兼容问题,你原来的配置命令可以直接生效,不需要额外修改。
  • 不升级NDK的临时兼容方案:同时添加正反斜杠两种格式的前缀映射规则,覆盖LLDB的自动转换逻辑:
    (lldb) settings set -- target.source-map "/home/user/src/xxx" "C:/Users/test/src/yyy"
    (lldb) settings append target.source-map "\\home\\user\\src\\xxx" "C:/Users/test/src/yyy"
    
    注意第二条规则里的反斜杠需要转义,要写两个连续的反斜杠。
  • 兜底方案:直接在C盘根目录创建和编译环境完全一致的目录结构home\user\src\xxx,把源码放到对应路径下,不需要配置target.source-map也可以正常加载源码。

内容的提问来源于stack exchange,提问作者Alexandr Konovalov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:57:03