xen을 좀 개량중인데 디버깅이 매우 불편하네요. privil~권한을 필요하는 하이퍼콜에 의해 수행되는 코드들의 디버깅도 힘들지만...
그중 지금 문제시 되는 부분은 qemu 랑 달리 프로세스를 제가 띄우는게 아니라 xend 가 기동시키는 경우가 많아서 libxc툴 등의 디버깅시 gdb 사용이 쉽지 않다는 점입니다. pid 를 사용하려고 해도 프로세스가 돌아간 순간 segfault 가 발생해서 pid를 사용할수도 없습니다. 코드에 sleep 를 길게 걸어서 그동안 디버깅을 시작 시킬수도 있지만.... 그러고 싶지 않네요...
segfault 를 발생시키는 버그코드를 만들어둔 상태라 gdb 가 꼭 사용하고싶은데, ulimit를 사용하면 코어 덤프를 뜬 후 디버깅을 할 수 있다는 글이 보이더군요.
그 글을 따라해본 결과, 해당 터미널에 대해서만 저 기능이 동작하더군요.(터미널에서 기동시키지 않은 프로세스에는 적용 안됨)
그래서 환경파일에 추가해서 배시 터미널이 열릴때마다 실행시키도록 설정했는데, 여전히 덤프가 나오질 않네요...
아마도 xend가 프로세스를 생성하는 과정에 저 방법은 먹히지 않는것 같습니다.
뭔가 좋은 xen tools(정확히는 xc_restore툴)의 디버깅 방법 알고 계시는 분이 계실까 해서 질문 올립니다.
감사합니다.(최종 목적은 함수스택 확인 입니다. 어디서 문제가 발생하는지...)
댓글 0
.