디버깅 툴 관련 질문.

하하의 이미지

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:
소개해주신 관리자님께서 답변 주시면 정말 고맙겠구요..

pynoos의 이미지

http://sourceforge.net/projects/ltrace/

ltrace 가 아직은 (1999년이 마지막 릴리즈입니다만..) linux thread를 제대로 지원하지 못하는 것 같습니다.

저도 뭐라고 답은 못하겠군요.

멈추는 부분은

strace ltrace ./<prog>

형태로 알아보면, 리눅스의 스케쥴러 쓰레드에서 멈춰있는 것을 확인할 수 있습니다.

kyong의 이미지

pynoos wrote:
http://sourceforge.net/projects/ltrace/

ltrace 가 아직은 (1999년이 마지막 릴리즈입니다만..) linux thread를 제대로 지원하지 못하는 것 같습니다.

http://packages.debian.org/cgi-bin/search_packages2.pl?keywords=ltrace&searchon=names&version=all&release=all