如果我用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
也有同样的问题。 您尝试过GDB用户定义的钩子或命令吗?
在~/.gdbinit或会话中,您可以执行以下操作:
这将在每次输入
next
命令或其别名时调用refresh
命令。或者你可以定义:
调用
mynext
,而不是next
。每当输入命令C并且存在hook-C时,hook就会自动调用,这太酷了,我刚刚在文档中发现了这一点。
见https://sourceware.org/gdb/current/onlinedocs/gdb/Define.html 和https://sourceware.org/gdb/current/onlinedocs/gdb/Hooks.html#Hooks
您可以添加任意数量的钩子/定义。
相关问题 更多 >
编程相关推荐