如何以可解析方式在GDB中打印加载的文件路径
在GDB中获取已加载程序的文件路径
我需要在GDB中获取已加载文件的完整路径——也就是通过file命令指定,或者作为GDB启动参数传入的文件路径,而非仅获取符号相关信息。
我试过几种方法,但效果都不理想:
- 直接执行无参数的
file命令:输出里包含目标路径,但会弹出是否丢弃符号表的确认提示,交互性过强,无法用于非交互场景 - 使用
maint info symtabs命令:输出开头能看到文件路径,但内容格式杂乱,难以自动化解析 - 按照建议使用
info file命令:输出结构复杂,同样难以在GDB内部直接解析提取路径
我希望找到更直接的方案:要么无需解析就能拿到路径,要么能将路径解析后存入GDB变量。可以使用GDB的Python API,但优先考虑不依赖Python的方案。经提示后,找到以下可行的Python方案:
基于Python API的解决方案
通过GDB的Python接口可以直接获取程序路径,并存入GDB变量供后续使用:
python gdb.execute('set $f = "' + str(gdb.selected_inferior().progspace.filename) + '"') p $f
执行后会得到类似输出:
$2 = "/tmp/a.out"
内容的提问来源于stack exchange,提问作者Piotr Zierhoffer
相关产品推荐
相关产品推荐

