:焦点は、その後、無限ループがあるかどうかの問題をデッドロックは、次の手順に従うことを、GDBがプロセスにアタッチデバッグ糸を使用し、CPUが高すぎる占めるスレッド、スレッドのプロセスを見ることである
1最初のPS +のgrepで気プロセスを見つけるために、 PIDのような1706
1706 -p 2トップ-H、(その後、トップおよび+ Hスレッドを見ることができるシフト、左上のヒントがある:上のスレッドがスレッドを参照することであった)のPIDを取るどのスレッドを参照するプロセスリスト内のすべてのスレッドであります、スレッド番号は、次のような、音符に対応する:1723
- gdbのプロセス番号に(1706)を取り付け
- 次のように情報スレッド(静止画GDBに)結果は以下のとおりです。
(gdb) info threads 8 Thread 0x7f9fa9366700 (LWP 1716) 0x0000003cec00b98e in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 7 Thread 0x7f9fa8965700 (LWP 1720) 0x0000003cec00b98e in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 6 Thread 0x7f9fa7f64700 (LWP 1721) 0x0000003cec00f4b5 in sigwait () from /lib64/libpthread.so.0 5 Thread 0x7f9fa7563700 (LWP 1722) 0x0000003cec00b98e in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 4 Thread 0x7f9fa6b62700 (LWP 1723) 0x0000003cec00b5bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 3 Thread 0x7f9fa6161700 (LWP 1724) 0x0000003cebce9163 in epoll_wait () from /lib64/libc.so.6 2 Thread 0x7f9fa1159700 (LWP 1887) 0x0000003cebce9163 in epoll_wait () from /lib64/libc.so.6 * 1 Thread 0x7f9fa95ad820 (LWP 1706) 0x0000003cec00b5bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
私達はちょうど注意し、スレッド数であるスレッド(LWP1723)に対応するスレッド番号を探します
- スレッド4我々だけで書き留めたスレッドの数に切り替えるには::1723これは、シリアル番号情報のスレッドは、すなわちの実装は、数字に現れスレッドを認識するためにGDBを使用する必要があります - (静止画GDBに)スレッドスレッド数がスレッド(4)に切り替えるには以下のように、スレッドに対応します:
(gdb) thread 4 [Switching to thread 4 (Thread 0x7f9fa6b62700 (LWP 1723))]#0 0x0000003cec00b5bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
ビュースレッドコールスタックBT 6(まだGDB中)
(GDB)BT
#0 0x0000003cec00b5bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9fa9f7144d in IceUtil::Cond::waitImpl (this=0x263f4c8, mutex=...) at ../../include/IceUtil/Cond.h:215 #2 0x00007f9fa9f9a4b1 in IceUtil::Monitor::wait (this=0x263f4c8) at ../../include/IceUtil/Monitor.h:152 #3 0x00007f9fa9fd7567 in IceInternal::EndpointHostResolver::run (this=0x263f480) at EndpointI.cpp:161 #4 0x00007f9fa9b1b975 in startHook (arg=0x263f480) at Thread.cpp:413 #5 0x0000003cec0079d1 in start_thread () from /lib64/libpthread.so.0 #6 0x0000003cebce8b6d in clone () from /lib64/libc.so.6
上記から7.情報の出力は、基本的にあなたがそこに無限ループがあり、それがデッドロックであればそうで、その後、繰り返し、現在のスレッドのスタックをチェック、またはすべてのスレッドのスタックを確認する必要がある場合は、常に存在します、スレッドオフに対応するコードを表示することができますこれらのスレッドは他のスレッドと矛盾する場合、解決する検索するコードに対応
オリジナル住所ます。https://www.cnblogs.com/wxmdevelop/p/8982255.html