gdb -tui
を使用してファイルをデバッグしている場合、ソースウィンドウは常に混乱します。だから私がヒットするたびに enter すぐに入力する必要があります ctrl+L この問題を取り除くために、これはgdb
がウィンドウを再更新する方法です。私はgnuscreenで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でデモンストレーションするために使用したファイルです。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またはセッションで、次のことができます。
define hook-next
refresh
end
これにより、refresh
コマンドまたはそのエイリアスの1つを入力するたびに、next
コマンドが呼び出されます。
または、次を定義できます。
define mynext
next
refresh
end
mynext
の代わりにnext
を呼び出します。
コマンドCが入力され、フックCが存在するたびにフックが自動的に呼び出されます。これは非常に優れているので、ドキュメントでそれを発見しました。
https://sourceware.org/gdb/current/onlinedocs/gdb/Define.html および https://sourceware.org/gdb/current/onlinedocs/gdb/Hooks)を参照してください。 html#Hooks
必要な数のフック/定義を追加できます。
部分的に関連:これを〜/ .gdbinitに配置すると、c
とn
を使用した後、TUIが正常に更新されます。これらのコマンドは、私の場合、通常TUIの問題を引き起こします。
define c
continue
refresh
end
define n
next
refresh
end