vscode+gdb+远程debug开启non-stop步骤

对于调试多线程程序,GDB 默认采用的是 all-stop 模式,即只要有一个线程暂停执行,所有线程都随即暂停。这种调试模式可以适用于大部分场景的需要,借助适当数量的断点,我们可以清楚地监控到各个线程的具体执行过程。

但在某些场景中,我们可能需要调试个别的线程,并且不想在调试过程中,影响其它线程的运行。这种情况下,可以将 GDB 的调试模式由 all-stop 模式更改为 non-stop 模式,该模式下调试多线程程序,当某一线程暂停运行时,其它线程仍可以继续执行。

关于all-stop与non-stop的介绍,可参考 https://www.cnblogs.com/jkin/p/13865298.html

可采取如下步骤开启 non-stop模式(以调试mysqld为例):

1. 以gdb启动mysqld

2. 设置:

set target-async 1

set pagination off

set non-stop on

3. 设置函数断点,然后run

通过如上步骤可以开启non-stop模式,但对于初次接触gdb调试或者习惯使用vscode的朋友,直接gdb的命令行使用起来还是有些困难的。

那么使用vscode+gdb远程调试,如何启用non-stop模式?

经过本人一下午的研究,gdb除了可以通过set语句设置启用non-stop之外,还可以在用户目录下的.gdbinit 文件内添加set语句来进行配置。例如:

vi /home/user1/.gdbinit

set target-async 1

set pagination off

set non-stop on

配置以上文件后,在用户user1 下执行gdb,每次就启用non-stop。

同理,对于vscode+gdb的远程调试,也可以目标linux服务器上配置.gdbinit 文件,debug启动时,就会启用non-stop 模式。

以上,与需要的人分享、交流。

参考连接:

https://www.cnblogs.com/jkin/p/13865298.html

https://www.cnblogs.com/lzpong/p/5881380.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值