Linux查看進程棧資訊__Linux

來源:互聯網
上載者:User

今天在Linux上偵錯工具程式的時候發現有時候程式會莫名其妙的hang住,於是就想能不能找到當時程式有那些線程,都在做什麼。找了一下linux命令,還真可以滿足我的需求。下面看一個小例子。

先準備一段程式,為了簡單起見這裡使用python來寫,其中建立了兩個線程來執行各自的任務。

import threadingimport timedef test1():    while(True):        time.sleep(1)        print 'test1'def test2():    while(True):        time.sleep(1)        print 'test2't1 = threading.Thread(target=test1, args=())t2 = threading.Thread(target=test2, args=())t1.start()t2.start()time.sleep(12345)

然後運行這個程式

$ python test.py

先使用 “pstree -apl ” 查看進程結構

$ pstree -apl 26855python,26855 test.py  |-{python},26858  |-{python},26859

然後使用 “ps -Lf ” 查看線程資訊

$ ps -Lf 26855UID        PID  PPID   LWP  C NLWP STIME TTY      STAT   TIME CMDjhadmin  26855 25902 26855  0    3 15:15 pts/5    Sl+    0:00 python test.pyjhadmin  26855 25902 26858  0    3 15:15 pts/5    Sl+    0:00 python test.pyjhadmin  26855 25902 26859  0    3 15:15 pts/5    Sl+    0:00 python test.py

最後,可以使用 “pstack ” 查看線程的詳細資料,如下:

$ pstack 26855Thread 3 (Thread 0x7f8a344f2700 (LWP 26858)):#0  0x00007f8a3b5387a3 in select () from /lib64/libc.so.6#1  0x00007f8a344f5070 in time_sleep () from /usr/lib64/python2.7/lib-dynload/timemodule.so#2  0x00007f8a3c215af0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#3  0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#4  0x00007f8a3c1a188d in function_call () from /lib64/libpython2.7.so.1.0#5  0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#6  0x00007f8a3c2104fd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#7  0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#8  0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#9  0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#10 0x00007f8a3c1a1798 in function_call () from /lib64/libpython2.7.so.1.0#11 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#12 0x00007f8a3c18b8d5 in instancemethod_call () from /lib64/libpython2.7.so.1.0#13 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#14 0x00007f8a3c20e6f7 in PyEval_CallObjectWithKeywords () from /lib64/libpython2.7.so.1.0#15 0x00007f8a3c2465c2 in t_bootstrap () from /lib64/libpython2.7.so.1.0#16 0x00007f8a3bf1ce25 in start_thread () from /lib64/libpthread.so.0#17 0x00007f8a3b54134d in clone () from /lib64/libc.so.6Thread 2 (Thread 0x7f8a33cf1700 (LWP 26859)):#0  0x00007f8a3b5387a3 in select () from /lib64/libc.so.6#1  0x00007f8a344f5070 in time_sleep () from /usr/lib64/python2.7/lib-dynload/timemodule.so#2  0x00007f8a3c215af0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#3  0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#4  0x00007f8a3c1a188d in function_call () from /lib64/libpython2.7.so.1.0                                                                                           #5  0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0                                                                                           #6  0x00007f8a3c2104fd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0                                                                                      #7  0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0                                                                                      #8  0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0                                                                                      #9  0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#10 0x00007f8a3c1a1798 in function_call () from /lib64/libpython2.7.so.1.0#11 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#12 0x00007f8a3c18b8d5 in instancemethod_call () from /lib64/libpython2.7.so.1.0#13 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#14 0x00007f8a3c20e6f7 in PyEval_CallObjectWithKeywords () from /lib64/libpython2.7.so.1.0#15 0x00007f8a3c2465c2 in t_bootstrap () from /lib64/libpython2.7.so.1.0#16 0x00007f8a3bf1ce25 in start_thread () from /lib64/libpthread.so.0#17 0x00007f8a3b54134d in clone () from /lib64/libc.so.6Thread 1 (Thread 0x7f8a3c6f3740 (LWP 26855)):#0  0x00007f8a3bf22a0b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0#1  0x00007f8a3bf22a9f in __new_sem_wait_slow.constprop.0 () from /lib64/libpthread.so.0#2  0x00007f8a3bf22b3b in sem_wait@@GLIBC_2.2.5 () from /lib64/libpthread.so.0#3  0x00007f8a3c242535 in PyThread_acquire_lock () from /lib64/libpython2.7.so.1.0#4  0x00007f8a3c2461c2 in lock_PyThread_acquire_lock () from /lib64/libpython2.7.so.1.0#5  0x00007f8a3c215af0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#6  0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#7  0x00007f8a3c21533c in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#8  0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#9  0x00007f8a3c21533c in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0#10 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0#11 0x00007f8a3c1a1798 in function_call () from /lib64/libpython2.7.so.1.0#12 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#13 0x00007f8a3c18b8d5 in instancemethod_call () from /lib64/libpython2.7.so.1.0#14 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0#15 0x00007f8a3c17c9c5 in call_function_tail () from /lib64/libpython2.7.so.1.0#16 0x00007f8a3c17ccfb in PyObject_CallMethod () from /lib64/libpython2.7.so.1.0#17 0x00007f8a3c232f29 in Py_Finalize () from /lib64/libpython2.7.so.1.0#18 0x00007f8a3c244325 in Py_Main () from /lib64/libpython2.7.so.1.0#19 0x00007f8a3b46ac05 in __libc_start_main () from /lib64/libc.so.6#20 0x000000000040071e in _start ()

這裡多說一句,如果要看java程式的棧資訊,可以使用 “kill -3 ” 來查看,比如:

$ nohub java Test > test.out &$ kill -3 <pid>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.