如何在.lldbinit中对target.source-map实现家目录路径展开?
解决LLDB中
target.source-map不支持家目录~展开的通用配置方案 单文件.lldbinit方案
直接在.lldbinit中添加一行Python脚本命令,借助Python的路径展开能力完成配置:
script import os; lldb.debugger.HandleCommand(f'settings set target.source-map /Users/builduser/src {os.path.expanduser("~/src")}')
原理:LLDB的script命令允许执行Python代码,而Python的os.path.expanduser()会自动将~解析为当前用户的家目录,再通过HandleCommand调用LLDB的设置命令,传入已经展开的合法路径,避开原生命令不支持~的问题。
双文件Python脚本方案
如果觉得单文件中的代码过于冗长,可以拆分出独立的Python脚本:
- 创建
source_map_setup.py脚本,内容如下:
import os import lldb def setup_source_map(): # 构建用户的源码路径 build_src_path = "/Users/builduser/src" # 展开当前用户的源码路径 local_src_path = os.path.expanduser("~/src") # 执行LLDB路径映射设置 lldb.debugger.HandleCommand(f'settings set target.source-map {build_src_path} {local_src_path}') # 脚本加载时自动执行 setup_source_map()
- 在
.lldbinit中添加脚本导入命令:
command script import ~/path/to/source_map_setup.py
注:替换~/path/to/为你实际存放source_map_setup.py的路径,LLDB的command script import支持~展开,所以这里可以直接使用。
两种方案都无需为每个用户手动修改路径,启动LLDB时会自动完成构建用户与当前用户的源码路径映射。
内容的提问来源于stack exchange,提问作者Chris Welton
相关产品推荐
相关产品推荐

