我有一個運行在64位Linux機器上的Python守護進程。它正在崩潰。不是一個友好,直接的調試,Python異常堆棧跟蹤類型的崩潰,要麼 - 這是一個分段錯誤。 linux的dmesg的日誌有一個簡潔的驗屍:此係統上Python崩潰;如何解碼dmesg日誌中的段錯誤?
python2.7[27509]: segfault at 7fe500000008 ip 00007fe56644a891 sp 00007fe54e1fa230 error 4 in libpython2.7.so.1.0[7fe566359000+193000]
python2.7[23517]: segfault at 7f5600000008 ip 00007f568bb45891 sp 00007f5678e55230 error 4 in libpython2.7.so.1.0[7f568ba54000+193000]
libpython2.7.so.1.0具有符號,我可以運行objdump -d
得到一個彙編語言轉儲。所以我很想知道哪個函數導致段錯誤。
我該如何解碼其中一個dmesg segfault聲明並找到錯誤的函數?一行說「7fe566359000 + 193000」,接下來說「7f568ba54000 + 193000」。我猜這意味着兩個段錯誤都來自同一個位置。 193000 = 0x2f1e8。我認爲0x2f1e8會導致Python庫彙編轉儲中的指令,但它不會; 0x2f1e8遠遠超出了反彙編的範圍。
你找到了你的問題的答案? – Jasonw