Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ lldb如何检查互斥锁的所有者?_C++_Multithreading_Gdb_Mutex_Lldb - Fatal编程技术网

C++ lldb如何检查互斥锁的所有者?

C++ lldb如何检查互斥锁的所有者?,c++,multithreading,gdb,mutex,lldb,C++,Multithreading,Gdb,Mutex,Lldb,在使用lldb进行调试时,我想知道互斥对象的所有者,我在线检查gdb是否可以像这样打印线程id 但是,当我在lldb中尝试此操作时,互斥体内的成员变量是不透明的,如: Process 76057 stopped * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: 0x00000001000017f5 a.out`main at lol2.cc:65 62

在使用lldb进行调试时,我想知道互斥对象的所有者,我在线检查gdb是否可以像这样打印线程id

但是,当我在lldb中尝试此操作时,互斥体内的成员变量是不透明的,如:

Process 76057 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x00000001000017f5 a.out`main at lol2.cc:65
   62       }
   63       std::cout << "main thread notify start" << std::endl;
   64       std::this_thread::sleep_for(std::chrono::seconds(1));
-> 65       start = true;
   66       cv.notify_all();
   67       {
   68           std::unique_lock<std::mutex> lk(mu1);
(lldb) p mu1
(mutex) $0 = {
  __mutex_base = {
    _M_mutex = (__sig = 1297437786, __opaque = char [56] @ 0x00007fc614127698)
  }
}
(lldb)
进程76057已停止
*线程#1,队列='com.apple.main thread',停止原因=断点1.1
帧#0:0x00000001000017f5 a.out`lol2处的main.cc:65
62       }

63 std::cout我不能说我知道如何读取不透明部分(可能取决于实现),但如果允许在新类中封装
std::mutex
,我建议使用Ami Tavory的答案来跟踪互斥对象的所有者