zoukankan      html  css  js  c++  java
  • ★ 4-调试多线程

    查看所有线程

    (gdb) thread 3
    [Switching to thread 3 (Thread 0x7fffe6e5d700 (LWP 34369))]
    #0  memset () at ../sysdeps/x86_64/memset.S:93
    93    ../sysdeps/x86_64/memset.S: No such file or directory.

    执行特定线程

    thread apply ID1 ID2 command        让一个或者多个线程执行GDB命令command
    thread apply all command            让所有被调试线程执行GDB命令command
    // command 表示要目标线程执行的操作,例如 next、continue 等

    指定线程设置断点

    (gdb) break location thread id                 // break 7 thread 3
    (gdb) break location thread id if...

    location 表示设置断点的具体位置;id 表示断点要作用的线程的编号;

    if... 参数作用指定断点激活的条件,即只有条件符合时,断点才会发挥作用。

    默认情况下,当某个线程执行遇到断点时,GDB 调试器会自动将该线程作为当前线程,并提示用户 "Switching to Thread n",其中 n 即为新的当前线程。

    调试线程锁

    默认情况下,无论哪个线程暂停执行,其它线程都会随即暂停;反之,一旦某个线程启动(借助 next、step、continue 命令),其它线程也随即启动。 GDB 调试默认的这种调试模式(称为全停止模式)。

    set scheduler-locking off|on|step 
    // 使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的
    set scheduler-locking off        off 不锁定任何线程,也就是所有线程都执行,这是默认值
    set scheduler-locking on         on 为锁定当前线程
    show scheduler-locking           查看线程锁的状态

    参考:

    http://c.biancheng.net/view/8261.html

    https://www.cnblogs.com/pugang/p/7698772.html

    个人学习笔记,网络内容搬运工,喜欢的点个赞,如有侵权请联系删除。
  • 相关阅读:
    Linux常用命令大全(非常全!!!)
    洛谷 P3379 【模板】最近公共祖先(LCA)
    POJ 3259 Wormholes
    POJ 1275 Cashier Employment
    POJ 3169 Layout
    POJ 1201 Intervals
    洛谷 P5960 【模板】差分约束算法
    洛谷 P3275 [SCOI2011]糖果
    POJ 2949 Word Rings
    POJ 3621 Sightseeing Cows
  • 原文地址:https://www.cnblogs.com/qing2105/p/14287406.html
Copyright © 2011-2022 走看看