2017-08-03 4 views
0

Ich möchte den Besitzer des Mutex wissen, wann mit LLDB Debuggen, ich online überprüfen, ob gdb https://en.wikibooks.org/wiki/Linux_Applications_Debugging_Techniques/Deadlockslldb wie überprüft man den Besitzer des Mutex?

drucken kann die Thread-ID wie Allerdings, wenn ich dies in LLDB versuchen, ist die Membervariable innerhalb Mutex undurchsichtig wie:

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) 

Gibt es eine Möglichkeit, den Inhalt des opaken Teils zu bekommen? Vielen Dank.

Antwort

1

Ich kann nicht sagen, ich weiß, wie der undurchsichtigen Teil zu lesen (kann die Umsetzung abhängig sein), aber ich würde vorschlagen, Ami Tavory Antwort mit here den Besitzer eines Mutex zu verfolgen, wenn std::mutex in einer neuen Klasse Einkapselung erlaubt ist.

Verwandte Themen