2017-04-12 74 views
0

我的程序掛了,我決定去ltracestrace吧。用strace和ltrace調試

strace -p pid 

讓我在屏幕上的 「無限」 打印:

lseek(3, 57114624, SEEK_SET)   = 57114624 
read(3, "\r\r\207\0\n\6O\0\16b\f\277\v\370\v1\ni\tm\10\245\7\335\7\25\6O\5v\5v"..., 4096) = 4096 
lseek(3, 57118720, SEEK_SET)   = 57118720 
read(3, "\r\1(\0\21\0`\0\0174\16l\r\246\f\336\f\26\vO\n\207\t\277\10\371\6\233\5\323\5\v"..., 4096) = 4096 
... 

ltrace -p pid 給出了同樣的 「無限」 打印:

memcmp(0x12efab68, 0x12eface8, 15, 0x12eface8)          = 0xfffffff8 
memset(0x12fa48e0, '\0', 72)              = 0x12fa48e0 
memset(0x12fa4928, '\0', 144)              = 0x12fa4928 
lseek64(3, 0x2c30000, 0, 0x2c30000)             = 0x2c30000 
memcpy(0x12efab68, "DIRAC.HLTFarm.lhcb", 18)          = 0x12efab68 
memcmp(0x12efab68, 0x12eface8, 15, 0x12eface8)          = 0xfffffff8 
memcpy(0x12efab68, "DIRAC.HLTFarm.lhcb", 18^C)          = 0x12efab68 

我可以做基於這些結果得出什麼結論關於程序正在發生什麼?

+2

你可以運行'ltrace -S -p pid'嗎?這將顯示庫調用和系統調用,正確交錯。 –

回答

1

附加調試器(使用gdb -p pid)並獲取回溯(使用bt命令)。這將更詳細地告訴你程序在哪裏旋轉。您可能必須安裝調試信息才能獲得有用的回溯。