gdb调试指令,以及ubuntu如何新建窗口

这几天需要在vpp下面写一个新函数接口,频繁使用gdb,因此做一下记录,主要是指令和操作

gdb指令参考:
链接: gdb使用
链接: gdb 常用命令



一、vpp进入调试

ubuntu系统:

在项目目录下:

$ make build
$ make debug

在这里插入图片描述

到(debug)命令行,输入r表示调试:

(debug) r

在这里插入图片描述
这里就是等待用户输入,这时候新建一个窗口,输入nat等指令进行交互。

二、打断点

以下断点关键字break均可以简写为b

指定文件名的加断点

由于项目中很多文件,建议使用指定文件名的加断点方法:

break [filename]:[line]

比如:

break /git/vpp/src/plugins/nat/det44/det44_in2out.c:1510

这里建议文件名使用绝对路径。

对函数名加断点

break [function]

比如:

break main

删除所有断点

delete

查看所有断点信息

info breakpoints

删除指定断点

delete [breakpoint number]

[breakpoint number] 可以通过 info breakpoints 指令查看

也可以delete一键全部删除

三、ubuntu新建窗口

由于调试需要和用户交互,因此新开一个窗口,使用screen指令
在这里插入图片描述

新建窗口

screen

Ctrl-a c  //先同时按Ctrl和a,然后按c

screen -S myWindow // 新建一个指定名字为myWindow 的窗口

切换窗口

Ctrl-a n:切换到下一个窗口。
Ctrl-a p:切换到上一个窗口。

关闭窗口

Ctrl-a k:关闭当前窗口。
然后根据提示按下 y 。

分离窗口

Ctrl-a d:分离当前会话。

分离会话时,会话并不会终止。分离会话只是将终端与会话断开连接,但会话仍然在后台运行。可以关闭终端窗口,稍后重新连接并恢复会话。

如果想要终止一个分离的screen会话,可以使用

screen -S [session #] -X quit

这将发送一个quit命令到指定的会话,从而终止该会话。

比如:

screen -S 69551.pts-0.jxtvpp -X quit

查看存在的screen会话

screen -ls

在这里插入图片描述

21605.pts-0.jxtvpp 就是这个新窗口的ID

根据ID进入窗口

screen -r 21605.pts-0.jxtvpp

四、开始调试

在新开的窗口中进入vpp指令界面,输入

sudo vppctl

然后输入指令,比如查看nat路由,当涉及到打断点的函数时,切换到调试窗口,会发现程序重新回到gdb模式:

在这里插入图片描述

gdb调试指令

设置了断点之后,可以运行程序,当程序运行到断点处时,它将暂停执行,并将控制权返回给GDB。此时可以使用GDB的调试命令来检查程序状态、单步执行代码或继续运行程序。

r :运行程序。您可以在命令后面添加程序参数。
c:继续运行程序,直到遇到下一个断点或程序结束。
n:执行下一行代码(单步执行),但不进入函数调用。
s:执行下一行代码(单步执行),并进入函数调用。
p [expression]:打印表达式的值。
bt:打印当前线程的调用栈。
q:退出GDB。

调试怎么看

在这里插入图片描述

1517            lo = true;

表示执行到了这一行,但这一行还未执行,这可以通过打印 lo 的值看出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值