我们都知道GDB默认会读取.gdbinit文件,并执行其中的命令。下面我们做个测试。
假设我们当前工作路径为:~/aa/
,已存在下面几个文件。
~/.gdbinit
echo source ~/.gdbinit\n source tmp1.gdbinit
~/aa/.gdbinit
echo source .gdbinit\n source tmp2.gdbinit
~/aa/tmp1.gdbinit
echo source tmp1.gdbinit\n
~/aa/tmp2.gdbinit
echo source tmp2.gdbinit\n
~/aa/tmp3.gdbinit
echo source tmp3.gdbinit\n
执行一下GDB,看看GDB的输出:
[xflm@ aa] $ gdb -x tmp3.gdbinit
source ~/.gdbinit
source tmp1.gdbinit
source .gdbinit
source tmp2.gdbinit
source tmp3.gdbinit
(gdb)
可以看出GDB默认执行顺序是:
source ~/.gdbinit
source .gdbinit
-x file 命令行指定的脚本文件
GDB还有个参数-nx
可以告诉GDB不要自动去执行~/.gdbinit
.gdbinit
。
[xflm@ aa] $ gdb -x tmp3.gdbinit -nx -ex “echo cmd line\n” -x .gdbinit
source tmp3.gdbinit
cmd line
source .gdbinit
source tmp2.gdbinit
(gdb)
可以看出GDB使用-nx
后仍然可以使用-x
指定要运行的脚本文件,-ex
用来指定一个命令。在命令行上,-x
-ex
顺序执行,-nx
可以在任何位置。
到此,探究结束了。