Linux-----gdb的多线程调试

一、多线程调试最重要的几个命令:

info threads  :查看当前进程的线程。GDB会为每一个线程分配一个ID,后面操作线程的时候会用到这个ID,前面有*的是当前调试的线程。

thread    :切换调试的线程为指定ID的线程。

Break file.c :100thread all 在file.c 文件第100行处为所有经过这里的线程设置断点。

set scheduler-locking off|on|step 在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时进行的,

注:怎么只让被调试程序执行呢?

        off 不锁定任何进程,也就是说所有的进程都执行,这是默认的。

        on  只有当前被调试程序会执行

        step  在单步的 时候,除了next过一个函数的情况以外,只有当前进程 会执行。

thread apply ID1 ID2 command  :让一个或多个线程执行GDB命令command。

thread apply all command  :让所有被执行程序执行GDB命令command

二、command命令

如何自动化调试。

这里将为大家介绍command命令,简单的解释一下,其就是把一组gdb的命令打包,有点像字处理软件的“宏”。

当我们的断点到达时,自动执行command中的命令。

三、GDB对多进程的调试

        在默认条件下,在调试多进程的时候GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。

follow-fork-mode     detack-on-fork 说明:

parenton只调试主进程(GDB调试)
childon只调试子进程
parentoff同时调试俩个进程,gdb跟主进程,子进程block在fork位置
childoff同时调试俩个进程,gdb跟子进程,主进程block在fork位置

设置方法:

           set follow-fork-mode [parent|child]

           set detach-on-fork[on|off]

查询正在调试的进程:

            info inferiors

切换调试的进程:

            inferiors <infer number>

添加新的调试进程:

            add-inferior[-copies n][-exec executable],可以用file executable 来分配给inferior可执行文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值