【GDB】命令脚本

文章目录

    • 命令脚本
    • python 脚本

命令脚本

首先对于命令脚本的命名,其实 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

效果展示
【GDB】命令脚本_第1张图片

python 脚本

编译并调试 C 代码

gcc -g test.c
gdb a.out

python 文件内容

import gdb

print(1+1)
print("hello py")

效果展示
【GDB】命令脚本_第2张图片
注意事项

  • import gdb 仅在 gdb 进程中运行 python 代码时有效。它不应该在常规系统 python 解释器中工作。
  • gdb 嵌入了 python 解释器,因此它可以使用 python 作为扩展语言。
  • 不能像 /usr/bin/python 一样只是 import gdb,因为它是普通的 python 库,因为 gdb 并不是结构化的库。
  • 可以在 gdb 中执行source script.py(等同于运行 gdb -x script.py)。

你可能感兴趣的:(#,qemu-基础篇,gdb,python)