프로그램 문제 해결 방법

MythRab의 이미지

이런 경우가 있지 않습니까...

새로운 프로그램을 작성했거나 기존의 잘 동작하던 프로그램을 수정 또는 그 프로그램에 다른 기능을 추가했을때 돌아가리라고 믿었던(?) 놈이 제대로 돌아가지 않는 경우...
문법적인 에러도 없고 며칠을 들여다봐도 논리적인 오류도 없는 것 같은데 잘 돌아가는 척 하면서 다른 결과를 가져오는 경우... 처음부터 다시 짜야되나 하는 생각도 들고, 몸에서 열이나고 왠지 컴을 던져버리고 싶은 욕망이 들곤 하지요. 나만 그런가 :oops:
사실 제가 이런 경우를 많이 겪고(좀 덤벙거리는 편이라서ㅡㅡ) 해결하는데 시간이 오래 걸리는 것 같아 여러분들은 이런 경우에 어떻게 어떤 방법으로 헤쳐나가시는지 궁금해서 글을 올립니다.

alwaysN00b의 이미지

처음부터 한루틴씩 끈어서 확인하죠.

자신이 코딩했으면 대충 짐작이 가는 부분있자나요.

그부분이 아니라면 첨부터 끈어서 해보세요

전 단순 무식하게 중간에 출력하나 넣어주고 exit 해보죠.

그럼 어디까진 정상작동인가 알게되고요.

데몬같은 경우 잘 돌다가 줄을때가 있는데 거의 메모리 할당 부분에 문제가 있을거에요

저두 초보라 도움이 되셨는지 모르겠네요.

언제나 시작

ssggkim의 이미지

MythRab wrote:
며칠을 들여다봐도 논리적인 오류도 없는 것 같은데 잘 돌아가는 척 하면서 다른 결과를 가져오는 경우...

저는 가끔씩 제가 짠 알고리즘을 제가 잘 이해 못해서 오류를 냅니다.
특히나 오랜만에 손을 댄 쪽이 그러지요. 주석 부재의 문제랄까요. :wink:
가끔은 오타로 인한 오류도 있을 수 있고...

제 경험으로는 그것에만 매달리면 잘 못찾겠더군요. 일단 제껴두고 다른 일
하다가 다시 들여다보면 '얼라리 이게 왜 이렇게 된거야~'하는 식으로 보이는
경우도 종종 있구요.

급한 경우는 윗분 얘기대로 중간중간 결과값을 확인하는 방법이 가장 확실하겠죠.

pynoos의 이미지

프로그램 흐름과 관련되어서는 저는 딱 세가지만 봅니다.

1. assert 잘썼나.
2. 함수 길이는 if, while nested 구문을 피하기 위해 적당히 잘랐나.
3. 모든 함수의 return 값은 적당히 처리되고 있나.

kuma의 이미지

단순 무식한 모터제어나 접점 제어만 하다 로직 덩어리에 파묻혀 버리니 그동안 굳게 믿고 있던 단단해 보였던 소스가 왜 이리도 허망하게 보이는지 ㅡㅜ

아직 시뮬레이션 단계이지만 하루에도 몇번이고 천당에서 지옥으로 오갑니다

역시 제작시 한줄 더 넣은 방어 로직이 디버깅시 하루 또는 일주일 이상의 값어치를 한다는것을 다시금 뼈저리게 느끼고 있습니다.

댓글 달기

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