python 64式: 第17式、死鎖或程序hang住除錯方法
阿新 • • 發佈:2018-11-27
步驟1:下載python-debuginfo 如果已經發現有/etc/yum.repos.d/xxx-Debuginfo.repo,就不需要下載 修改 /etc/yum.repos.d/xxx-Debuginfo.repo 將其中的 enabled=0 修改為 enabled=1 步驟2:下載gdb yum install gdb -y 步驟3: 下載debug資訊包 然後執行如下命令 yum install python-debuginfo -y 如果無法下載,就執行如下命令更新yum:。 yum makecache 然後再執行: yum install python-debuginfo -y 步驟4: 連線到程序 gdb -p pid pid是指程序號,可以通過 ps -ef 檢視,請替換為實際的程序號 步驟5: 列印資訊 py-bt 解釋: 檢視當前程序的堆疊資訊,這是很重要的命令,一般可以看到程序執行到哪裡發生死鎖或者卡住,進而可以回到python原始碼確定最終問題在哪裡 py-list 解釋: 顯示python程序當前程式碼執行到哪裡 py-locals 解釋: 顯示當前程序中的區域性變數 py-print 解釋: 列印python變數的值 用法: 例如 py-print self info threads thread <thread-num> 解釋: 先檢視執行緒資訊,然後切換執行緒想要檢視的執行緒 thread apply all py-list: 解釋:檢視所有程序執行位置 附: 另外一個可以連線到python程序的工具是pyrasite-shell,安裝命令為: pip install pyrasite 用法: pyrasite-sehll pid 解釋: pid是程序號。可通過ps -ef檢視 參考: [1] https://devguide.python.org/gdb/ [2] https://www.jianshu.com/p/d150563f49a3 [3] https://pyrasite.readthedocs.io/en/latest/Shell.html