GDB抓虫之旅(下篇)

叁叁肆2018-09-19 09:45

本文来自网易云社区


作者:盛国存


3.4、错误定位

$ gcc -g -o multi_thread multi_thread.c –lpthread
$ ./multi_thread
$ ps -eLF |grep multi
work 21675 19997 21675 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21676 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21677 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21678 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21679 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21680 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21681 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21682 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21683 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21684 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21685 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21686 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21687 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21688 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21689 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21690 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21691 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21692 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21693 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21694 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread
work 21675 19997 21695 0 21 52124 464 0 00:25 pts/8 00:00:00 ./multi_thread


$ gdb
GNU gdb Red Hat Linux (6.3.0.0-1.96rh)Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".(gdb) attach 21680
Attaching to process 21680
Reading symbols from /home/work/testers/sgc/study/multi_thread...done.
Using host libthread_db library "/lib64/tls/libthread_db.so.1".
Reading symbols from /lib64/tls/libpthread.so.0...done.
[Thread debugging using libthread_db enabled]
[New Thread 182894112416 (LWP 21675)]
[New Thread 1283537248 (LWP 21695)]
[New Thread 1273047392 (LWP 21694)]
[New Thread 1262557536 (LWP 21693)]
[New Thread 1252067680 (LWP 21692)]
[New Thread 1241577824 (LWP 21691)]
[New Thread 1231087968 (LWP 21690)]
[New Thread 1220598112 (LWP 21689)]
[New Thread 1210108256 (LWP 21688)]
[New Thread 1199618400 (LWP 21687)]
[New Thread 1189128544 (LWP 21686)]
[New Thread 1178638688 (LWP 21685)]
[New Thread 1168148832 (LWP 21684)]
[New Thread 1157658976 (LWP 21683)]
[New Thread 1147169120 (LWP 21682)]
[New Thread 1136679264 (LWP 21681)]
[New Thread 1126189408 (LWP 21680)]
[New Thread 1115699552 (LWP 21679)]
[New Thread 1105209696 (LWP 21678)]
[New Thread 1094719840 (LWP 21677)]
[New Thread 1084229984 (LWP 21676)]
Loaded symbols for /lib64/tls/libpthread.so.0
Reading symbols from /lib64/tls/libc.so.6...done.
Loaded symbols for /lib64/tls/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0(gdb) bt
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000432041e0 in ?? ()#2 0x00000000432049f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()(gdb) info threads
21 Thread 1084229984 (LWP 21676) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
20 Thread 1094719840 (LWP 21677) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
19 Thread 1105209696 (LWP 21678) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
18 Thread 1115699552 (LWP 21679) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
17 Thread 1126189408 (LWP 21680) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
16 Thread 1136679264 (LWP 21681) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
15 Thread 1147169120 (LWP 21682) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
14 Thread 1157658976 (LWP 21683) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
13 Thread 1168148832 (LWP 21684) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
12 Thread 1178638688 (LWP 21685) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
11 Thread 1189128544 (LWP 21686) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
10 Thread 1199618400 (LWP 21687) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
9 Thread 1210108256 (LWP 21688) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
8 Thread 1220598112 (LWP 21689) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
7 Thread 1231087968 (LWP 21690) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
6 Thread 1241577824 (LWP 21691) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
5 Thread 1252067680 (LWP 21692) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
4 Thread 1262557536 (LWP 21693) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
3 Thread 1273047392 (LWP 21694) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
2 Thread 1283537248 (LWP 21695) 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
1 Thread 182894112416 (LWP 21675) 0x000000302b806ffb in pthread_join () from /lib64/tls/libpthread.so.0(gdb) thread apply all bt

Thread 21 (Thread 1084229984 (LWP 21676)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x0000000000000000 in ?? ()Thread 20 (Thread 1094719840 (LWP 21677)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000414011e0 in ?? ()#2 0x00000000414019f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 19 (Thread 1105209696 (LWP 21678)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x0000000041e021e0 in ?? ()#2 0x0000000041e029f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 18 (Thread 1115699552 (LWP 21679)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000428031e0 in ?? ()#2 0x00000000428039f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 17 (Thread 1126189408 (LWP 21680)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000432041e0 in ?? ()#2 0x00000000432049f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 16 (Thread 1136679264 (LWP 21681)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x0000000043c051e0 in ?? ()#2 0x0000000043c059f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 15 (Thread 1147169120 (LWP 21682)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000446061e0 in ?? ()#2 0x00000000446069f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()---Type <return> to continue, or q <return> to quit---

Thread 14 (Thread 1157658976 (LWP 21683)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000450071e0 in ?? ()#2 0x00000000450079f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 13 (Thread 1168148832 (LWP 21684)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x0000000045a081e0 in ?? ()#2 0x0000000045a089f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 12 (Thread 1178638688 (LWP 21685)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x00000000464091e0 in ?? ()#2 0x00000000464099f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 11 (Thread 1189128544 (LWP 21686)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x0000000046e0a1e0 in ?? ()#2 0x0000000046e0a9f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 10 (Thread 1199618400 (LWP 21687)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004780b1e0 in ?? ()#2 0x000000004780b9f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 9 (Thread 1210108256 (LWP 21688)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004820c1e0 in ?? ()#2 0x000000004820c9f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 8 (Thread 1220598112 (LWP 21689)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x0000000048c0d1e0 in ?? ()---Type <return> to continue, or q <return> to quit---
#2 0x0000000048c0d9f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 7 (Thread 1231087968 (LWP 21690)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004960e1e0 in ?? ()#2 0x000000004960e9f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 6 (Thread 1241577824 (LWP 21691)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004a00f1e0 in ?? ()#2 0x000000004a00f9f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 5 (Thread 1252067680 (LWP 21692)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004aa101e0 in ?? ()#2 0x000000004aa109f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 4 (Thread 1262557536 (LWP 21693)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004b4111e0 in ?? ()#2 0x000000004b4119f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 3 (Thread 1273047392 (LWP 21694)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004be121e0 in ?? ()#2 0x000000004be129f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()Thread 2 (Thread 1283537248 (LWP 21695)):
#0 0x000000302b80adfb in __lll_mutex_lock_wait () from /lib64/tls/libpthread.so.0
#1 0x000000004c8131e0 in ?? ()#2 0x000000004c8139f0 in ?? ()#3 0x000000302b807bd4 in pthread_mutex_lock () from /lib64/tls/libpthread.so.0
#4 0x0000000000000000 in ?? ()---Type <return> to continue, or q <return> to quit---
Thread 1 (Thread 182894112416 (LWP 21675)):
#0 0x000000302b806ffb in pthread_join () from /lib64/tls/libpthread.so.0
#1 0x0000000000400b69 in main (argc=1, argv=0x7fbffffa08) at multi_thread.c:76


总结

GDB是一个好用的抓虫工具,随意控制进程,随便查看内存和环境;上述只是新手学习过程中的一些记录,欢迎深入探讨。


网易云免费体验馆0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区