core dump를 프로그래밍 상에서 남길수 있는 방법이 없나요?

metalwolf의 이미지

다름이 아니라. 저는 core dump를 디버깅 자료로 많이 활용하고 있습니다. 현재

running 중인 프로세스에 대한 멤버들의 값들을 볼려면 core dump시키는

방법이 최적일것 같은데요. 혹시 프로그래밍 으로 현재 running 중인

프로세스에 대한 core dump 남길 수 없을까요?

그리고님들께서는 현재 running 중인 프로세스에 대한 디버깅을 어떻게

하시는지?

저 같은 경우는 보통 클라이언트로 command 를 날려서 그때의 멤버 변수들을

파일로 남깁니다. 이것도 한계가 있는지라 도저히 못잡겠다 하면 현재 돌아가는

프로세스를 gdb로 디버깅 합니다. 하지만 그럴적에는 서비스 프로세스가 멈추

기 때문에 문제가 많더군요. 그래서 프로그래밍으로 core dump를 남길수

있는 방법이 있는지 궁금해서 요. 님들께서 좋은 방법 알고 계시면 리플좀

달아주세요.^___^;

xjiwoox의 이미지

abort() 함수를 호출하시면 됩니다.

s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a

eungkyu의 이미지

돌고 있는 프로세스 id 를 가지고

$ gdb program pid

이렇게 하면 running중인 프로세스에 gdb를 attach하여 디버깅할 수 있는데, 이 방법은 써보셨나요? 물론 detach를 하면 다시 프로세스는 잘 돌아갑니다 :)

realian의 이미지

gdb쓰는 위의 방법은 질문하신 분께서 프로세스가 멈추기때문에 곤란하다고 하신 방법같네요..

원하는 위치에서 보자면 abort(); 문을 코드 상에 넣는게 제일 좋을것 같군요.
실시간으로 잡자면 gcore를 써보셔도 좋을것 같습니다...

man gcore

gcore - get core images of running processes

:D

..........No Sig.........|
-------------------+

eungkyu의 이미지

다시 읽어보니 이 방법도 이미 시도해보신 것 같네요 :oops:

eungkyu wrote:
돌고 있는 프로세스 id 를 가지고

$ gdb program pid

이렇게 하면 running중인 프로세스에 gdb를 attach하여 디버깅할 수 있는데, 이 방법은 써보셨나요? 물론 detach를 하면 다시 프로세스는 잘 돌아갑니다 :)

eungkyu의 이미지

방금 뒤져보니, gdb에 generate-core-file이라는 명령이 있네요 :)

실행중인 프로세스에 gdb를 attach한 다음 재빨리 위 명령을 내리고 나오면 될 거 같습니다.

metalwolf의 이미지

님들 답변 갑사합니다. ^____^;

하지만 위의 방법을 둘다 해보았지만 attach는 gdb가 디버깅 하는 동안은

프로세스가 멈추기 때문에 할수 없고 abort 시그널은 core를 발생하지만

프로세스가 termiate 되기 때문에 사용할수가 없군요.

지금 현재 서비스 되고 있는 프로세스에 대해 프로세스를 멈 추지 않는 상태에서

core를 남길수 있는 방법은 없을까요?

그런데 gcore는 어디서 구해야 되나요? 제 시스템에는 gcore가 없는데요..

혹시 사이트 알고 계시면 답변 좀 주세요.. ^^

^____^; 방가여

realian의 이미지

gcore는 안되던가요...?

저야 회사 시스템에 설치되어 있어서 쓰는데, 따로 설치해주어야 하는건가요..? ㅡ.ㅡ;;

..........No Sig.........|
-------------------+

yykim의 이미지

gcore 혹은 gdb로 해당되는 프로세스의 core 를 잡으면 됩니다
혹시나 gcore나 gdb 가 프로그램을 죽인다면
필요한 부분에서 fork() 후, 하나는 core를 잡고 하나는 계속 실행되면 됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.