如何在GDB的mi解释器模式中通过钩子检测GDB退出?

时间:2015-04-07 08:39:18

标签: gdb

我在“mi interpreter”模式下运行GDB,我使用用户定义的钩子来检测停止,退出等事件。

每当事件发生时,挂钩将打印一些重定向到不同日志文件的信息。

另一个应用程序将从此日志文件中读取内容并进行处理。

我已经写了一个钩子来检测GDB退出,如图所示:

define hook-quit
set logging file D:\log\task.log
set logging on
print "GDB end detected"
set logging off
end

在GDB的控制台模式下,当GDB退出时,上面的挂钩会成功执行。

然而,在GDB的“mi解释器模式”中,挂钩无法执行。

是否有任何替代钩子(或任何方法)用于在“mi解释器模式”中检测GDB退出。

经测试的环境:

Windows 7
工具链:arm-none-eabi(命令: arm-none-eabi-gdb.exe --interpreter = mi D:\ test.elf)

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题。

一种是使用Python在“退出”钩子上写入打印到日志。应该在gdb退出期间运行Python出口挂钩。

另一种方法是在另一层进行编写:无论是调用gdb -i=mi还是编写调用gdb的包装脚本,然后在gdb退出时写入日志。