Windows端lldb连接Linux lldb-server时source-map不生效问题咨询
问题1:是否遗漏相关配置项
你大概率是遇到了跨平台路径适配的配置遗漏,可逐一排查以下配置:
- 确认路径匹配完全一致:先执行
image lookup -vn main,查看输出中CompileUnit行的完整路径,保证target.source-map左侧填写的源路径和该路径完全匹配(包括大小写、末尾斜杠) - 修正Windows侧路径格式:设置映射时Windows侧路径优先使用正斜杠,例如源码放在
D:\code\project时,指令写为:
如要使用反斜杠需要转义,写为settings set target.source-map /home/xxx/linux_project D:/code/projectD:\\code\\project - 开启大小写不敏感匹配:Linux路径大小写敏感、Windows默认大小写不敏感,可执行以下指令适配:
settings set target.source-map-case-insensitive true - 调整配置顺序:如果先设置source map再创建target不生效,可在
target create a.out执行完成后,再重新执行一遍source map设置指令。
问题2:跨平台使用场景是否存在功能限制
存在明确的功能限制,主要分为两类:
- 原生系统差异带来的限制:除了上述路径分隔符、大小写敏感的差异外,Windows端lldb的默认源文件搜索规则和Linux端不同,不会默认扫描当前工作目录下的源码,需要额外添加搜索路径时可执行:
settings append target.source-search-paths D:/your/src/path - 版本兼容限制:Windows端lldb和Linux端lldb-server如果大版本号不一致,会存在调试信息解析兼容问题,部分旧版本Windows lldb对高版本DWARF调试信息的解析支持不全,也会导致源码无法正常加载,建议两端使用相同大版本的lldb工具链。
内容的提问来源于stack exchange,提问作者Xu Jun
相关产品推荐
相关产品推荐

