GDB中info sources命令能否使用多模式?参数异常求助
GDB
info sources 多模式过滤问题 GDB的info sources命令不支持同时使用多个过滤选项(比如-dirname和-basename)组合筛选,这是命令本身的设计限制——它一次只能接受一个过滤参数,后续的选项会被当作当前选项的匹配模式内容,所以你输入的-basename stat会被解析成-dirname的正则表达式一部分,自然匹配不到结果。
替代解决方案
分步筛选:先用单个选项缩小范围,再手动查找目标文件。比如先执行:
info sources -dirname src然后在输出结果里自行查找包含
stat的文件名。用Python脚本实现组合过滤:借助GDB的Python API,直接遍历所有符号表文件并同时检查目录和文件名:
import gdb def filtered_info_sources(dir_pattern, file_pattern): for symtab in gdb.current_progspace().symtabs(): full_path = symtab.filename dir_name = gdb.pathname_dirname(full_path) if dir_pattern in dir_name and file_pattern in full_path: print(full_path)在GDB中执行以下命令即可使用:
python filtered_info_sources("src", "stat")单正则匹配完整路径:如果你的GDB版本较新(12及以上),可以直接用正则匹配完整文件路径,把目录和文件名的条件合并成一个表达式。比如:
info sources ^.*src.*stat.*$这个正则会匹配路径中同时包含
src和stat的文件,可根据实际路径结构调整正则细节。
内容的提问来源于stack exchange,提问作者ardabro
相关产品推荐
相关产品推荐

