Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
途易模式下的GDB:如何应对stderr';s与ui的交互_Gdb_Command Line Interface_Tui - Fatal编程技术网

途易模式下的GDB:如何应对stderr';s与ui的交互

途易模式下的GDB:如何应对stderr';s与ui的交互,gdb,command-line-interface,tui,Gdb,Command Line Interface,Tui,我正在尝试使用gdb进行调试。我更喜欢使用tui模式,因为它允许我查看整个源代码,而不仅仅是一行代码。但有一个问题:每当程序caffe在stderr上输出某些东西时,输出就会扭曲tui接口。请参见下面的快照以了解说明: 这是gdb tui固有的局限性还是有任何方法可以解决这个问题?我从未找到解决此类tui烦恼的方法,最终放弃并转向更可靠的方法: 使用GDB Python API获取GDB数据 每次停止后,将一些预先配置的视图输出到stdout,而不是将终端置于magic ncurses模式

我正在尝试使用gdb进行调试。我更喜欢使用tui模式,因为它允许我查看整个源代码,而不仅仅是一行代码。但有一个问题:每当程序
caffe
stderr
上输出某些东西时,输出就会扭曲tui接口。请参见下面的快照以了解说明:


这是gdb tui固有的局限性还是有任何方法可以解决这个问题?

我从未找到解决此类tui烦恼的方法,最终放弃并转向更可靠的方法:

  • 使用GDB Python API获取GDB数据
  • 每次停止后,将一些预先配置的视图输出到stdout,而不是将终端置于magic ncurses模式

GDB Dashboard就是这样一种解决方案,我已经在:

中对其进行了描述,正如@ks1322建议的那样,您可以按Ctrl-L刷新屏幕。或者在每个
下一个
命令后定义一个in.gdbinit进行刷新:

define hook-next
    refresh
end

在从GDB运行应用程序时,是否尝试将stderr重定向到dev/null(以防未连接到正在运行的进程)?就像:运行$your_args 2>/dev/null@bikjub这是可行的,但更像是一种黑客行为。gab不能处理任何非静默程序吗?使用cgdb如何?它为gdb提供了一个非常好的curses接口。任何来自目标的输出,甚至到stdout的输出,都将出现在tui显示器的某个地方;它通常出现在cmd窗口的顶部,靠近状态行,因为在启动或继续进程之后,光标通常位于该位置。您可以使用
tty
命令让目标使用不同的终端进行输入和输出。您也可以按Ctrl-L刷新tui屏幕。但每次tui被扭曲后,你都必须这样做。