core dump를 프로그래밍 상에서 남길수 있는 방법이 없나요?
글쓴이: metalwolf / 작성시간: 토, 2003/07/19 - 10:59오전
다름이 아니라. 저는 core dump를 디버깅 자료로 많이 활용하고 있습니다. 현재
running 중인 프로세스에 대한 멤버들의 값들을 볼려면 core dump시키는
방법이 최적일것 같은데요. 혹시 프로그래밍 으로 현재 running 중인
프로세스에 대한 core dump 남길 수 없을까요?
그리고님들께서는 현재 running 중인 프로세스에 대한 디버깅을 어떻게
하시는지?
저 같은 경우는 보통 클라이언트로 command 를 날려서 그때의 멤버 변수들을
파일로 남깁니다. 이것도 한계가 있는지라 도저히 못잡겠다 하면 현재 돌아가는
프로세스를 gdb로 디버깅 합니다. 하지만 그럴적에는 서비스 프로세스가 멈추
기 때문에 문제가 많더군요. 그래서 프로그래밍으로 core dump를 남길수
있는 방법이 있는지 궁금해서 요. 님들께서 좋은 방법 알고 계시면 리플좀
달아주세요.^___^;
Forums:
abort() 함수를 호출하시면 됩니다.
abort() 함수를 호출하시면 됩니다.
s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a
돌고 있는 프로세스 id 를 가지고[code:1]$ gdb pro
돌고 있는 프로세스 id 를 가지고
$ gdb program pid
이렇게 하면 running중인 프로세스에 gdb를 attach하여 디버깅할 수 있는데, 이 방법은 써보셨나요? 물론 detach를 하면 다시 프로세스는 잘 돌아갑니다 :)
gcore
gdb쓰는 위의 방법은 질문하신 분께서 프로세스가 멈추기때문에 곤란하다고 하신 방법같네요..
원하는 위치에서 보자면 abort(); 문을 코드 상에 넣는게 제일 좋을것 같군요.
실시간으로 잡자면 gcore를 써보셔도 좋을것 같습니다...
:D
..........No Sig.........|
-------------------+
다시 읽어보니 이 방법도 이미 시도해보신 것 같네요 :oops:[
다시 읽어보니 이 방법도 이미 시도해보신 것 같네요 :oops:
방금 뒤져보니, gdb에 generate-core-file이라는 명령이
방금 뒤져보니, gdb에 generate-core-file이라는 명령이 있네요 :)
실행중인 프로세스에 gdb를 attach한 다음 재빨리 위 명령을 내리고 나오면 될 거 같습니다.
attach 방법과 abort()는 문제가 있네요.
님들 답변 갑사합니다. ^____^;
하지만 위의 방법을 둘다 해보았지만 attach는 gdb가 디버깅 하는 동안은
프로세스가 멈추기 때문에 할수 없고 abort 시그널은 core를 발생하지만
프로세스가 termiate 되기 때문에 사용할수가 없군요.
지금 현재 서비스 되고 있는 프로세스에 대해 프로세스를 멈 추지 않는 상태에서
core를 남길수 있는 방법은 없을까요?
그런데 gcore는 어디서 구해야 되나요? 제 시스템에는 gcore가 없는데요..
혹시 사이트 알고 계시면 답변 좀 주세요.. ^^
^____^; 방가여
gcore...?
gcore는 안되던가요...?
저야 회사 시스템에 설치되어 있어서 쓰는데, 따로 설치해주어야 하는건가요..? ㅡ.ㅡ;;
..........No Sig.........|
-------------------+
gcore 혹은 gdb로 해당되는 프로세스의 core 를 잡으면 됩니다
gcore 혹은 gdb로 해당되는 프로세스의 core 를 잡으면 됩니다
혹시나 gcore나 gdb 가 프로그램을 죽인다면
필요한 부분에서 fork() 후, 하나는 core를 잡고 하나는 계속 실행되면 됩니다.
댓글 달기