如何在tui模式下自动刷新gdb?

2024-06-07 11:33:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我用gdb -tui调试文件,源窗口总是会变得混乱。所以每次我按enter键时,我必须立即键入ctrl键来解决这个问题,这就是gdb刷新窗口的方法。我在用gnu屏幕处理tty。

是否有可能在tui模式下自动刷新gdb?
如果gdb不具备这种能力,Python可能是一个解决方案,因为gdb能够提供Python文件的源代码,但我不知道Python。

这个Python片段在Bash中工作得很好,但在gdb中没有:

import sys
r = "\033[2J"    # here I try to emulate [ctrl-L]
t = ""
while 1:
    i = sys.stdin.read(1)
    t = t +i
    if i == '\n':
        print(r)

当然,我接受gdb支持的所有其他语言。
感谢您的帮助。

顺便说一下,这里有一个显示我的问题的屏幕广播https://youtu.be/DqiH6Jym1JY

这是我在gdb中演示的文件,就像上面的链接show's,mess_up.c

#include <stdio.h>

int main(void){
    //int n = 120;
    int n;
    n = 120;
    char stuff[n+2];

    printf( "Max: %d\n", n );

    printf( "Sizeof int:  %d\n", sizeof(int)  );
    printf( "Sizeof char: %d\n", sizeof(char) );
    printf( "Sizeof n:  %d\n", sizeof n   );
    printf( "Sizeof stuff: %d\n", sizeof stuff  );

    fgets ( stuff , n , stdin );
    printf( "The stuff:\n%s\n", stuff );
    printf( "Sizeof stuff after input = %d\n", sizeof stuff  );

return 0;
}

tic -V显示的实际ncurses版本是ncurses 5.9.20140118


Tags: 文件屏幕stdinsysintctrlentertui
1条回答
网友
1楼 · 发布于 2024-06-07 11:33:49

也有同样的问题。 您尝试过GDB用户定义的钩子或命令吗?

在~/.gdbinit或会话中,您可以执行以下操作:

define hook-next
  refresh
end

这将在每次输入next命令或其别名时调用refresh命令。

或者你可以定义:

define mynext
  next
  refresh
end

调用mynext,而不是next

每当输入命令C并且存在hook-C时,hook就会自动调用,这太酷了,我刚刚在文档中发现了这一点。

https://sourceware.org/gdb/current/onlinedocs/gdb/Define.htmlhttps://sourceware.org/gdb/current/onlinedocs/gdb/Hooks.html#Hooks

您可以添加任意数量的钩子/定义。

相关问题 更多 >

    热门问题