gdb中如何使用shell环境变量
我的可执行程序在一个很深的目录中,平时开发时都是用一个环境变量CSRC指向的。但在GDB里这样就很不爽了。因为GDB命令是不支持shell环境变量的。所以
file $CSRC/bin/xpath2cmddt.exe
会报告说文件找不到。但每次打长长一串路径实在是很痛苦。
在GDB的mailing-list问到了一个方法:可以用下面的gdb命令序列迂回得到所要的效果:
shell echo file $CSRC/bin/xpath2cmddt.exe >/tmp/tmp.csrcxpath
source /tmp/tmp.csrcxpath
shell rm /tmp/tmp.csrcxpath
不过每次都打这么一串命令也太麻烦了。所以,我在$HOME/.gdbinit中定义了一个自定义命令:
define loadxpath
shell echo file $CSRC/bin/xpath2cmddt.exe >/tmp/tmp.csrcxpath
shell echo cd $CSRC/bin >>/tmp/tmp.csrcxpath
source /tmp/tmp.csrcxpath
shell rm /tmp/tmp.csrcxpath
end
这样进了gdb之后只要打
loadxpath
就可以了。
爽。
我的可执行程序在一个很深的目录中,平时开发时都是用一个环境变量CSRC指向的。但在GDB里这样就很不爽了。因为GDB命令是不支持shell环境变量的。所以
file $CSRC/bin/xpath2cmddt.exe
会报告说文件找不到。但每次打长长一串路径实在是很痛苦。
在GDB的mailing-list问到了一个方法:可以用下面的gdb命令序列迂回得到所要的效果:
shell echo file $CSRC/bin/xpath2cmddt.exe >/tmp/tmp.csrcxpath
source /tmp/tmp.csrcxpath
shell rm /tmp/tmp.csrcxpath
不过每次都打这么一串命令也太麻烦了。所以,我在$HOME/.gdbinit中定义了一个自定义命令:
define loadxpath
shell echo file $CSRC/bin/xpath2cmddt.exe >/tmp/tmp.csrcxpath
shell echo cd $CSRC/bin >>/tmp/tmp.csrcxpath
source /tmp/tmp.csrcxpath
shell rm /tmp/tmp.csrcxpath
end
这样进了gdb之后只要打
loadxpath
就可以了。
爽。