Terminal 在另一个终端中显示gdb tui源代码

Terminal 在另一个终端中显示gdb tui源代码,terminal,gdb,tui,Terminal,Gdb,Tui,是否可以将gdbtui接口配置为在另一个终端窗口中显示源代码(我可以将其放在另一个屏幕中),或者使用类似tmux的东西来模拟这种行为?我不知道具体用gdb-tui来实现这一点的任何方法。 使用普通gdb或tui的一种方法是滥用python提示钩子 函数,重写它以基于当前文件/行产生一些效果 并返回正常提示 下面是一个示例,它使用vim的+clientserver功能在终端中启动vim,并随着程序计数器的变化而变化 import os import subprocess servername =

是否可以将
gdb
tui接口配置为在另一个终端窗口中显示源代码(我可以将其放在另一个屏幕中),或者使用类似
tmux
的东西来模拟这种行为?

我不知道具体用gdb-tui来实现这一点的任何方法。 使用普通gdb或tui的一种方法是滥用python提示钩子 函数,重写它以基于当前文件/行产生一些效果 并返回正常提示

下面是一个示例,它使用vim的+clientserver功能在终端中启动vim,并随着程序计数器的变化而变化

import os
import subprocess

servername = "GDB.VI." + str(os.getpid());
terminal = "gnome-terminal"
terminal_arg ="-e"
editor = "vimx"
term_editor = "%s --servername %s" % (editor, servername)

subprocess.call([terminal, terminal_arg, term_editor])

def linespec_helper(linespec, fn):
  try:
    x = gdb.decode_line(linespec)[1][0]
    if x != None and x.is_valid() and x.symtab != None and x.symtab.is_valid():
      return fn(x) 
  except:
    return None

def current_file():
  return linespec_helper("*$pc", lambda x: x.symtab.fullname())

def current_line():
  return str(linespec_helper("*$pc", lambda x: x.line))

def vim_current_line_file():
  aLine = current_line()
  aFile = current_file()
  if aLine != None and aFile != None:
    subprocess.call([editor, "--servername", servername, "--remote", "+" + aLine, aFile])

old_prompt_hook = gdb.prompt_hook
def vim_prompt(current_prompt):
  vim_current_line_file()
  if old_prompt_hook != None:
    old_prompt_hook(current_prompt)
  else:
    None
gdb.prompt_hook = vim_prompt