• GDB scheduler-locking 命令详解


    GDB scheduler-locking 命令详解

    GDB> show scheduler-locking     //显示线程的scheduler-locking状态
    GDB> set scheduler-locking on    //调试加锁当前线程,停止所有其他线程

    set scheduler-locking mode
    Set the scheduler locking mode. It applies to normal execution, record mode, and replay mode. If it is off, then there is no locking and any thread may run at any time. If on, then only the current thread may run when the inferior is resumed. The step mode optimizes for single-stepping; it prevents other threads from preempting the current thread while you are stepping, so that the focus of debugging does not change unexpectedly. Other threads never get a chance to run when you step, and they are completely free to run when you use commands like ‘continue’, ‘until’, or ‘finish’. However, unless another thread hits a breakpoint during its timeslice, GDB does not change the current thread away from the thread that you are debugging. The replay mode behaves like off in record mode and like on in replay mode.

    show scheduler-locking
    Display the current scheduler locking mode.

    By default, when you issue one of the execution commands such as continue, next or step, GDB allows only threads of the current inferior to run. For example, if GDB is attached to two inferiors, each with two threads, the continue command resumes only the two threads of the current inferior. This is useful, for example, when you debug a program that forks and you want to hold the parent stopped (so that, for instance, it doesn’t run to exit), while you debug the child. In other situations, you may not be interested in inspecting the current state of any of the processes GDB is attached to, and you may want to resume them all until some breakpoint is hit. In the latter case, you can instruct GDB to allow all threads of all the inferiors to run with the set schedule-multiple command.

    set schedule-multiple
    Set the mode for allowing threads of multiple processes to be resumed when an execution command is issued. When on, all threads of all processes are allowed to run. When off, only the threads of the current process are resumed. The default is off. The scheduler-locking mode takes precedence when set to on, or while you are stepping and set to step.

    show schedule-multiple
    Display the current mode for resuming the execution of threads of multiple processes.

    GDB> set scheduler-locking off
    GDB> show schedule
    schedule-multiple  scheduler-locking  
    GDB> show scheduler-locking 
    Mode for locking scheduler during execution is "off".
    GDB> set scheduler-locking step
    GDB> show scheduler-locking 
    Mode for locking scheduler during execution is "step".
    GDB> set scheduler-locking on
    GDB> show scheduler-locking 
    Mode for locking scheduler during execution is "on".
  • 相关阅读:
    20151216JqueryUI---dialog代码备份
    20151215jqueryUI--dialog代码备份
    20151215jquery学习笔记--jqueryUI --dialog(对话框)
    20151214 jquery插件代码备份
    20151213Jquery学习笔记--插件
    javaweb常用工具类及配置文件备份
    Javaweb常用工具类及配置文件备份
    20151212Jquery 工具函数代码备份
    20151212jquery学习笔记--工具函数
    CF976E Well played!
  • 原文地址:https://www.cnblogs.com/pugang/p/7698772.html
Copyright © 2020-2023  润新知