如何为GDB命令脚本分配唯一ID并将shell输出赋值给GDB便利变量
GDB将shell命令输出赋值给便利变量的实现方法
高版本GDB(8.2及以上)最简方案
GDB 8.2版本新增了内置便利变量$_shell_output,会自动存储上一次shell命令输出的第一行内容,直接按以下步骤操作即可:
- 执行你的ID生成脚本:
shell myid.sh - 直接将内置变量赋值给自定义便利变量:
set $a = $_shell_output
如果myid.sh输出包含多行,$_shell_output只会保留第一行,提前确保脚本仅输出唯一ID即可
全版本通用兼容方案
如果使用的GDB版本低于8.2,没有$_shell_output支持,可以通过临时文件中转的方式实现:
- 配置GDB日志规则,避免多余输出污染结果:
set logging file /tmp/gdb_unique_id.tmp set logging overwrite on set logging redirect on set logging on
- 执行ID生成脚本,输出会被写入指定临时文件:
shell myid.sh - 关闭日志,读取临时文件内容赋值给便利变量,同时删除换行符:
set logging off set $a = "$(shell cat /tmp/gdb_unique_id.tmp | tr -d '\n')"
- 可选操作,清理临时文件:
shell rm -f /tmp/gdb_unique_id.tmp
高频使用优化
如果需要频繁调用这个逻辑,可以封装为GDB自定义命令:
define get_unique_id shell myid.sh > /tmp/gdb_unique_id.tmp set $arg0 = "$(shell cat /tmp/gdb_unique_id.tmp | tr -d '\n')" shell rm -f /tmp/gdb_unique_id.tmp end
后续直接执行get_unique_id $a即可完成赋值,无需重复写多步命令。
内容的提问来源于stack exchange,提问作者SRobertJames
相关产品推荐
相关产品推荐

