gdb调试技巧之TUI之下的变量查看

我们在用gdb进行c语言调试时,为了查看源程序,了解程序执行位置,一般都会用tui模式,即:

gdb -tui xxxxxx

在tui模式下,用户界面分为上下两个窗口,上面为src窗口,下面为cmd窗口。缺省焦点在src窗口,方向键可以控制源代码的滚动。

可以用focus命令控制焦点位置:

focus cmd 命令将焦点切换到cmd窗口

focus src命令将焦点切换到源代码窗口

焦点切换到cmd窗口后,可以使用方向键回滚命令输入和进行命令编辑。

但无论焦点在那个窗口,tui模式下是没有复制粘贴功能的。这时如果需要查看变量需要手工敲完整的变量名,当c语言定义了比较复杂的结构时,需要了解结构中那些动态分配内存的变量情况就变得很麻烦。不过我们知道,Linux下命令行终端是有复制粘贴能力的,如果我们使用命令行终端本身的复制粘贴功能,就可以从别的编辑窗口拷贝复杂的结构了。

为了使用命令行终端的复制粘贴功能,我们可以使用gdb提供的快捷键ctl+x+a退出tui模式,待查看完变量后再用同样的快捷键返回tui模式即可。这样可以免去手工敲击大量字符之苦。

另外,gdb还有一个非常实用的命令update,当你在src窗口使用上下键翻看源代码后,想要回到当前正在执行的那行代码,可以使用这个命令。

如果程序调试过程中有打印输出,会破坏窗口的整体形状,这是可以使用ctrl+l来恢复窗口的整洁状态。

另附:gdb多线程调试相关命令

info threads 查看当前所有可以调试的线程

thread xx 切换到xx线程,xx为info thread 命令看到的第一列id

set scheduler-locking on 只运行当前线程

set scheduler-locking off 运行所有线程

thread apply xx n 命令线程xx执行n命令

thread apply xx b perfthread.c:196  设置线程断点到perfthread.c文件的196行

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值