zoukankan      html  css  js  c++  java
  • windbg cs

    !cs 扩展显示一个或多个临界区(critical section)或者整个临界区树

    !cs Address 指定要显示的临界区地址。如果省略该参数,调试器显示当前进程中所有临界区。
     
    0:003> !cs 00403370   
    -----------------------------------------  
    Critical section   = 0x00403370 (test2+0x3370)  
    DebugInfo          = 0x7c99e9e0  
    LOCKED  
    LockCount          = 0x1  
    OwningThread       = 0x0000185c  
    RecursionCount     = 0x1  
    LockSemaphore      = 0x2C  
    SpinCount          = 0x00000000  

      这里LockCount为1意思为除了一个线程拥有它外,另外还有一个线程在等待它,它是由EnterCriticalSection增加,LeaveCriticalSection来减小的,如果临界区是有信号的,则显示NOT LOCKED(值为-1)。

      OwningThread表示拥有这个临界区的线程ID,RecursionCount表示拥有线程调了几次EnterCriticalSection,这其实也影响到了LockCount,如果拥有线程多调用一次EnterCriticalSection,那么 LockCount也会相应加1,因为LockCount标识了任意线程调用EnterCriticalSection请求这个互斥量的次数减1,(所以0-1=-1为NOT LOCKED)当然,前面如果调用了LeaveCriticalSection,那么 LockCount也会相应减1。

           !cs -s 如果可能的话,显示每个临界区的初始堆栈回溯。!cs -l 仅显示锁定的临界区。!cs -o 对所有显示出来的已锁定的临界区,显示所有者的堆栈。
  • 相关阅读:
    Kanzi Studio中的概念
    Linux基本操作1
    Kanzi入门
    Kanzi UI Solution
    Linux下内存占用和CPU占用的计算
    AD19新功能之交互式等长
    AD19新功能之跟随走线
    AD19新功能之Gloss Selected(修线)
    AD19新功能之ActiveRoute
    RT-Thread--内核移植
  • 原文地址:https://www.cnblogs.com/renyuan/p/6198586.html
Copyright © 2011-2022 走看看