【问题标题】:Is there a tool to monitor synchronisation objects (mutex, events, semaphores) in Windows?Windows 中是否有监控同步对象(互斥量、事件、信号量)的工具?
【发布时间】:2009-04-29 07:38:40
【问题描述】:

在Windows中,有没有工具可以监控进程同步对象的状态?即。

  • 事件/互斥体:有信号或没有信号
  • 信号量:计数

更好的是,记录哪个线程做了什么,例如。 “线程 #5421 信号事件 - testevt”

【问题讨论】:

    标签: c++ windows visual-studio synchronization


    【解决方案1】:

    Memory Validator

    Process Explorer

    Handle 用法:句柄 -s ==> Print count of each type of handle open.

    [编辑]

    如何使用 Process Explorer 监控进程同步对象的状态。

    打开进程浏览器

    • 在进程部分单击您的 exe(例如:MyApp.exe)
    • 单击Show Lower Pane(或按Ctrl+L)。这将显示所有同步对象。 (例如:myEvent)
    • 右键单击同步 对象(例如:myEvent)并单击 属性...在上下文菜单中。
    • 这带来了同步对象的细节。 在Details 选项卡中,您可以看到

      Event Info(如果同步对象是事件):提供有关 状态(同步对象是否发出信号)

      Semaphore info(如果同步对象是信号量): 提供信号量的计数。

    【讨论】:

    • +1 for Process Explorer - 这是我用来探索 NT 对象的方法
    • 感谢您的编辑。现在我真的知道 Process Explorer 满足了我的需求。
    【解决方案2】:

    看看英特尔的 ThreadChecker 和 Parallel Studio。他们的大多数工具都位于 Visual Studio 之上。

    http://software.intel.com/en-us/intel-vtune/

    http://software.intel.com/en-us/intel-thread-checker/

    http://software.intel.com/en-us/intel-vtune/

    【讨论】:

      【解决方案3】:

      Thread Validator 执行您所描述的操作。

      监控线程、锁状态、单个线程对象。比 Intel 的 Thread Checker 快得多,但详细程度不同。

      【讨论】:

        【解决方案4】:

        Windbg 可能会有所帮助,但您必须学习如何使用它。

        【讨论】:

          猜你喜欢
          • 2016-07-24
          • 2017-08-24
          • 2012-08-13
          • 2012-09-01
          • 1970-01-01
          • 2011-04-20
          • 2015-10-25
          • 1970-01-01
          • 2015-09-04
          相关资源
          最近更新 更多