首先对于命令脚本的命名,其实 gdb 没有什么特殊要求,只要文件名不是 gdb 支持的其它脚本语言的文件名就可以了(比如.py)
。因为这样做会使 gdb 按照相应的脚本语言去解析命令脚本,结果自然是不对的。
其次为了帮助用户写出功能强大的脚本,gdb 提供了如下的流程控制命令:
if...else...end
。这个同其它语言中提供的if命令没什么区别,只是注意结尾的 end
。while...end
。gdb 同样提供了 loop_break 和 loop_continue 命令分别对应其它语言中的 break 和 continue ,另外同样注意结尾的 end。另外 gdb 还提供了很多输出命令。比方说 echo 命令,如果仅仅是输出一段文本,echo 命令特别方便。此外还有和 C 语言很相似的支持格式化输出的 printf 命令,等等。
脚本文件的注释也是以 # 开头的,这个同很多其它脚本语言都一样。
最后指出的是在 gdb 中执行脚本要使用 source 命令,例如:source xxx.gdb
。
编译并调试 C 代码
gcc -g test.c
gdb a.out
命令脚本:新建一个文件 test.gdb
并输入如下内容
echo hello, test gdb1\n
echo hello, test gdb2\n
echo hello, test gdb3\n
echo hello, test gdb4\n
编译并调试 C 代码
gcc -g test.c
gdb a.out
python 文件内容
import gdb
print(1+1)
print("hello py")