디버깅 툴 관련 질문.
ltrace 관련 질문입니다.
아래는 ltrace를 관리자님께서 소개 해주신 글입니다
http://bbs.kldp.org/viewtopic.php?t=1045&highlight=ltrace
저는 요즘 쓰레드를 이용한 일종의 proxy 서버를 제작 중인데요
서버의 함수 콜 등등을 보려고 ltrace를 사용하려 합니다. 그런데..
서버를 띄우고 ltrace -p PID (-f) 이런 식으로 사용을 해보면..
항상 서버가 defunct 되거던요.
아래를 보시면
[astrokoo@testbed-t1 CLI]$ ltrace -p 11201(서버 PID)
accept(4, 0, 0, 0x40057bfc, 0x4005afac) = 5
printf("accept newsock %d\n", 5) = 17
pthread_create(0xbffff89c, 0xbffff860, 0x08048e20, 5, 0x4005afac <unfinished ...>
--- 0 (Real-time signal 0) ---
breakpointed at 0x4007e9b5 (?)
<... pthread_create resumed> ) = 0
select(5, 0xbffff8a0, 0, 0, 0
서버가 리슨을 하고 있다가 읽은게 들어오면 accept 하고 thread 생성
다시 select 그리고
한없이 멈춰있고 ( -f 옵션을 줘서 자식 또는 thread로 분기를 했는데도.. 마냥 그대로 이고) 더이상 진행이 안됩니다.
현재 프로세스를 ps -ef 해보면
astrokoo 11201 30504 0 21:09 pts/9 00:00:00 ./des_gw1.0 sec_client.conf
astrokoo 32197 11201 0 21:14 pts/9 00:00:00 [des_gw1.0 <defunct>]
astrokoo 726 5896 0 21:14 pts/14 00:00:00 grep des
이렇게 좀비가 생겨 있습니다....
man ltrace를 봐도 이에 대한 건 못찾겠구요.. ltrace 알아두면 유용한
툴인데 전 잘 안되네요... 어디에 문제가 있는건가요?
서버 자체는 ltrace를 걸지 않으면 정말 잘 돌아 가거던요.....
PS:
소개해주신 관리자님께서 답변 주시면 정말 고맙겠구요..
http://sourceforge.net/projects/ltrace/
http://sourceforge.net/projects/ltrace/
ltrace 가 아직은 (1999년이 마지막 릴리즈입니다만..) linux thread를 제대로 지원하지 못하는 것 같습니다.
저도 뭐라고 답은 못하겠군요.
멈추는 부분은
strace ltrace ./<prog>
형태로 알아보면, 리눅스의 스케쥴러 쓰레드에서 멈춰있는 것을 확인할 수 있습니다.
---
http://coolengineer.com
[quote="pynoos"]http://sourceforge.net/p
http://packages.debian.org/cgi-bin/search_packages2.pl?keywords=ltrace&searchon=names&version=all&release=all
댓글 달기