2017-04-12 13 views
0

내 프로그램이 중단되었으며 ltracestrace으로 결정했습니다.strace 및 ltrace를 사용하여 디버그

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 

것은 나는이 결과를 바탕으로 어떤 결론을 할 수

strace -p pid 

나에게 화면에 "무한"인쇄를 제공합니다 프로그램에서 벌어지는 일에 대해?

+2

'ltrace -S -p pid'를 실행할 수 있습니까? 그러면 라이브러리 호출과 시스템 호출이 모두 표시되고 올바르게 삽입됩니다. –

답변

1

디버거 (gdb -p pid)를 부착하고 역 추적 (bt 명령 사용)을 얻습니다. 그러면 프로그램이 어디에서 회전하는지 자세히 알려줍니다. 유용한 백 트레이스를 얻으려면 디버깅 정보를 설치해야 할 수 있습니다.