windows 환경에서 디버그 해보신 분.

kicom95의 이미지

안녕하세요

Unix 상에서 그럭저럭 돌아가던 프로그램인데요...

windows 상에서 간혹 죽는데....Dev C++

를 활용합니다. Dev C++ 상에서 디버그 해서 돌리면 죽지않는데..

독립적으로 돌리면 죽네요... core 파일도 생기지 않고...

멀티 쓰레드 프로그램이라서 어디에서 죽는지도 감도 안생기고..

후.,.. 이런 경우 어떻게 ??

gdb 로 돌려도 살거든요... -_-;;

버려진의 이미지

사용하는 라이브러리 문제일때 그럴 경우가 있어요.

만약에 xxxx.dll이 windows폴더에도 있고 실행되는 그 프로그램이 있는 폴더에도 존재하는데 두개의 버전이 다르다거나...

다른 경우에 대해서는 고수님들께 패스~

pynoos의 이미지

빌드할때 멀티쓰레드용 라이브러리와 링크하지 않은 경우,
잘도는것처럼 보이다가 쓰레드간 락이 걸려야할 곳에서 걸리지 않아
죽는 경우가 있습니다. 특히 그렇게 빌드된 프로그램은 멀티 CPU 환경에서
더 잘 일어납니다.

철이^^v의 이미지

죽을때 windows OS 에서 fault 가 난 번지를 보여주지 않나요?

디버거 환경이 아니라도 link 할때 map 파일을 만들도록 해 놓으면, 해당 map 파일을 통해서 fault 난 곳을 추정할수 있는걸로 알고 있습니다.
혹은 개발툴을 써서 그 해당 위치의 코드가 무엇인지 확인할수도 있고요.

도움이 되었기를~

익명 사용자의 이미지

mingw 로 컴파일하신것 같은데 gdb 상에서 돌려보시면 힌트가 보이지 않을까요? 윈도에선 core 가 남진 않지만 gdb 상에서 죽을때 마지막 스택정도는 볼수 있던것으로 기억합니다.

jika의 이미지

질문하신 상황하고는 좀 다를수도 있는데

아래쪽으로 내려갈수록 쓰레드 갯수가 많을수록 디버깅툴 이용하는게

힘들어지고 믿을수 없어집니다.

디버깅 코드가 삽입되면 프로세스 처리 흐름이 달라지는 경우가 있거든요..

무슨말인가 하면 죽는 위치를 안다는것과 죽는 이유를 안다는것이

멀티쓰레드 환경에선 다를수 있다는 겁니다.

제가 시스템 프로그래밍 쪽 일을 해서 그런지는 몰라도

역시 디버깅은 코드를 찬찬이 들여다 보는 방법이 가장 정석인듯 싶습니다.

위에 어떤분이 지적 하셨듯이 멀티쓰레드 환경에서 불특정한 상황에서 죽는다면

십중팔구 락이 걸리지 않아서 발생하는 문제일겁니다.

락 걸고 풀고 하면 락이 걸리는거라 생각하기 쉬운데

같은 자료를 사용하는 모든 구문에 락이 걸려야 하는것을 자꾸 잊지요...

유닉스에서 전혀 안죽었는데 윈도우에서만 죽는다면

원인이 다른데 있을수도 있겠네요..

역시 윗분이 지적하신 라이브러리 라던가...

하지만 역시 락이 안걸려있는게 의심스럽습니다.

kicom95의 이미지

천천히 보고 있는데... 버퍼 오버 플로우가 1byte 정도 일어 나네요... Unix 에서는 그냥 넘어 가는데....ㅎㅎㅎ

답변해주신 모든 분들에게 감사드립니다.

가자 해외로 ~ .. 돈 벌러.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.