如何通过自定义命令禁用GDB TUI更新src窗口?

问题描述

为允许在内部跟踪功能后移至下一条语句,我将以下gdb extension放入gdbinit中(也可以在用gdb -x或由{从运行中的gdb手动进行一次source mystep.cmd的操作):

define mystep
  set $steps = 1
  if $argc == 1
    set $steps = $arg0
  end
  set $i = 0
  while $i < $steps
    advance trace_func
    finish
    set $i = $i + 1
  end
  refresh
end
document mystep
  Step program until it reaches a different traced source line.
  Usage: mystep [N]
  Argument N means step N times (or till program stops for another reason).
end

它本身就像一个咒语,但是有两个问题:

  1. 最后一个refresh(作为command file)将始终启用tui模式(如果尚未启用)。
  2. TUI的源窗口有时会闪烁,因为它试图显示我不感兴趣的trace_func(因为用户定义的命令使用advance来继续直到到达),然后转到后面的实际陈述。 mystep 3尤其如此(并且在更高的位置,因为tui在其中停留的时间更长)。

问题:

  1. 有没有一种方法可以通过命令文件进行检查(我猜一个人可以查询tui状态,并根据结果进行刷新,或者通过if ... end不执行任何操作)。
  2. 是否有防止更新源窗口的选项(=它应保留在当前帧中)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)