[해결] 프로그램을 실행시켰더니 오류가 떴어요...;; 도움 부탁!!

sincerescent의 이미지

컴파일과 링크를 어렵게 마치고 프로그램 실행을 했는데 이런 오류가 떴어요...
무슨 뜻인가요?;; 도움을 부탁드립니다.....

 *** Break *** segmentation violation
Using host libthread_db library "/lib64/tls/libthread_db.so.1".
Attaching to program: /proc/29531/exe, process 29531
[Thread debugging using libthread_db enabled]
[New Thread 182957215168 (LWP 29531)]
0x000000383548fe24 in waitpid () from /lib64/tls/libc.so.6
#1  0x0000003835439bcf in do_system () from /lib64/tls/libc.so.6
#2  0x0000002a95d3c3ac in TUnixSystem::StackTrace ()
   from /usr/local/root_v5.16.00/lib/libCore.so
#3  0x0000002a95d39188 in TUnixSystem::DispatchSignals ()
   from /usr/local/root_v5.16.00/lib/libCore.so
#4  <signal handler called>
#5  0x000000000040feb9 in main (argc=Variable "argc" is not available.
) at qc_mon.cc:58
danskesb의 이미지

어떤 프로그램인지 알려 주셔야 답을 할 수 있을 것 같습니다.

---- 절취선 ----
http://blog.peremen.name

sincerescent의 이미지

측정된 데이터를 읽어들여서 계산한 뒤, 그래프로 그리는 프로그램이예요.
수백개의 장비가 사용되는 실험에 관한 프로그램이라서 사용되는 라이브러리와 함수가 많아요.
전 그중에 일부분을 맡은건데.. 프로그래밍 초짜라서 에러메시지를 보고도 제가 어떤식의 잘못을 한건지 전혀 감이 안잡히네요...

sincerescent의 이미지

찾아봤더니...

Quote:

segmentation violation상황이 발생되는 가장 일반적인 방법은 비참조 되는 널( defeferencing a null) 이나 초기화되지 않은 포인터에 의한 것이다.

널 포인터는 주소 0으로 참조되고, 대부분의 운영체제는 이 주소가 정확하게 유용하지 않음을 확실히 하기 때문에

비참조 널 포인터는 segmentation violation이 발생될 것이다.

(어떤 운영체제는 주소가 0인 메모리도 유용하고, 비참조 널 포인터는 그들 시스템상에서는 시그널을 발생하지 않는다.)

비초기화된 포인터에서는, 유용하지 않거나, 유용하더라도 임의의 주소들을 갖게된다.

이 상황이 얻어지는 다른 일반적 방법은 배열에 포인터를 사용했을 때 그 배열의 끝을 체크하기를 실패했을 때이다

라네요.. 근데 이게 무슨 뜻인지 모르겠어요. 대략 제가 배열이나 포인터 사용을 잘못했다는 뜻인것 같긴한데....;;

klara의 이미지

적으신대로 '어딘가에서' 포인터등을 잘 못다루었을 때 주로 발생합니다.
실제로 뭐가 문제인지는 이걸로는 '절대로' 알수 없고, 소스코드를 봐야합니다.
말씀하신걸보면 간단한 프로그램도 아닌듯 한데, 이러면 소스코드 얼핏봐서 알긴 힘들듯하고요, 직접 디버거 돌려서 찾으시는수밖에 없을듯하네요.

sincerescent의 이미지

네.. 저같은 초보가 이런걸 맡아서 정말 고군분투하는 중이예요..;;
gdb라는 디버거 사용법을 공부해보려고 합니다.
근데 #5에 그나마 qc_mon.cc의 58번째 줄이 이상이 있다는 소리같아서 봤는데 memcpy(&trun, argv[4], sizeof(int)); 입니다. 제가 뭘 잘못했을까요. 추측이라도 댓글 주시면 감사하겠습니다ㅠ 이상한 건.. 바로 윗줄의 memcpy(&run, argv[3], sizeof(int));는 에러메시지가 안 떴다는 거죠. run과 trun 모두 int 형이고, 초기화도 시켰는데 말예요.
아, 그리고 이 부분은 모두 int main(int argc, char *argv[8]) 함수 내에 있습니다.

phonon의 이미지

예를 들면,

1번(OK)
c:\>RunGraphic.exe 0 1 2 3 4 5 6 7

2번(NG)
c:\>RunGraphic.exe 0 1 2

인수로 몇개가 들어올지 모르는 경우같은데,
고정으로 네번째 인수를 참조했으니,
프로세스가 죽을 수 밖에 없겠지요.

메인함수에 인자수를 검사하는 루틴이 필요하고 생각됩니다.

sincerescent의 이미지

4번째 인수를 넣지 않아서 나오는 오류였네요;;;;
정말 이런 어이없는 실수를...;;;;
phonon님의 말씀이 맞아요ㅎ
당연히 프로세스가 죽을 수 밖에..
근데, 그런 간단한 경우에도 이렇게 복잡해보이는 오류가 나는군요..ㅎ
어쨌든 여러분들 덕분에 문제가 해결되었어요~ 감사합니다.

p.s.아이디가 물리학쪽이시네요?ㅎ 반가워요~ 입자물리 저는 전공을 하는 학생입니다^^
이 프로그램은 그 쪽에 관한거예요ㅎ

댓글 달기

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