途易模式下的GDB:如何应对stderr';s与ui的交互
我正在尝试使用gdb进行调试。我更喜欢使用tui模式,因为它允许我查看整个源代码,而不仅仅是一行代码。但有一个问题:每当程序途易模式下的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模式
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被扭曲后,你都必须这样做。