我在"mi解释器"模式下运行GDB,我使用用户定义的挂钩来检测诸如停止、退出等事件。
每当事件发生时,钩子都会打印一些信息,这些信息被重定向到不同的日志文件。
另一个应用程序将读取此日志文件中的内容并对其进行处理
我写了一个钩子来检测GDB退出,如图所示:
define hook-quit
set logging file D:logtask.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--解释器=mi D:\test.elf)
我想到了几种方法。
一种是使用Python在打印到日志的"at exit"钩子处进行编写。Python出口挂钩应该在gdb出口期间运行。
另一种是在不同的层进行编写:要么在调用gdb -i=mi
的任何层中,要么通过编写一个包装脚本来调用gdb,然后在gdb退出时写入日志。