리눅스 환경에서 C 프로그램에 대한 오류 [EDIT1 :] I 글로벌로를 sqlName를 들어"는 0x0 주소는 다음 malloc, stack'd 또는 (최근) free되기를 않음"
선언 매개 변수는 파일의 시작 부분에
char seqName [20];
[Edit2가 :]
실제 실행 중에 프로그램에 전달하는 그 숫자가 아닌가요? valgrind 도구를 사용하여 다음과 같은 메시지가 나타납니다. 명령 I 입력은 다음과 같습니다
JL의 @ 우분투 : ~/작업/dsr_analysis $ Valgrind의 --tool = memcheck --leak 검사 = 예 ./test
[EDIT3 :]
죄송합니다. Valgrind를 처음 사용하는 사용자인데 사용하면 Edit2에서만 명령을 입력합니다.
그러나 내 프로그램에는 몇 가지 명령 줄 매개 변수가 있습니다.
Valgrind의 --tool = memcheck --leak 검사 = 352 288
foreman.cif 예 ./test :그러므로 나는 새 명령에 의해 내 프로그램을 디버깅하는 것이 더 거라고 생각
height = atoi(argv[3]);
width = atoi(argv[2]);
sprintf(seqName,"%s", argv[1]);
// strcpy(seqName, argv[1]);
을 컴파일 후, exe 파일 테스트가 생성되고, 나는 그것을 확인하기 위해 Valgrind의를 사용
내 프로그램의 조각이있다. 그렇다면 다음 메시지가 표시되지만 나에게 어떤 말을하는지 이해할 수는 없습니다. 누구나 친절한 도움을 제공 할 수 있습니까?
JL의 @ 우분투 : ~/작업/dsr_analysis $ Valgrind의 --tool = memcheck --leak 검사 = 예 ./test
== 28940 == Memcheck, 메모리 에러 검출기
== 28940 == Julian Seward 외 다수의 저작권 (C) 2002-2009 및 GNU GPL'd.
== 28940 == Valgrind-3.6.0.SVN-Debian 및 LibVEX 사용하기; 저작권 정보 -h와
는다시 실행
== 28940 == 명령 : ./test
== 28940 ==
== 크기의 28940 == 잘못된 읽기 1
0x40260CA에서== 28,940 ==의 strcpy (mc_replace_strmem.c : 311)
== 0x804A5C6하여 28,940 == 본체 (me_search.C : 1,428)
== 28,940 == 0x0 주소가 stack'd되지 않고, 또는 다음 malloc (최근) free되기를
== 28,940 ==
== 28,940 ==
== 신호의 기본 동작도 11의 (SIGSEGV)
== 28,940 ==
== 28,940 == 0x40260CA에서 0x0 주소에 매핑되지 영역 내의 통로와 종료 28,940 == 공정 :의 strcpy (mc_replace _strmem.c : 311)
== 0x804A5C6하여 28,940 == : 주 (me_search.c : 당신이 믿는 경우 1428)
== 28940 ==이 스택의 결과로 일어난
== 28940 == 프로그램의 메인 스레드에서 오버 플로우 (가능성이 있지만
== 28940 == 가능), 당신은을 사용하여 28,940 == 메인 스레드 스택을
==의 크기를 증가시키기 위해 시도 할 수 있습니다 - -main-stacksize = 플래그.
== 28,940 ==이 실행에 사용되는 주 스레드 스택 크기였다 8388608.
== 28,940 ==
== 28,940 == HEAP 요약 :
== = 28,940 = 출구에서 사용 :
== 28940 ==
할당 0 바이트 0 allocs, 0 해방 : 0 블록== 28940 == 총 힙 사용량이 0 바이트
== 28940 == 모든 힙 블록이 해제되었다 - 누출이
== 28940 ==
==와 감지 및 억제 오류의 수, 다시 실행을 위해 28,940 == 할 수 없습니다 : -v
== 28,940 == ERROR 요약 : 1 컨텍스트 (억제 : 13 (8)에서) 1 1 에러 상황 (억제 : 8 내지 13)
1 컨텍스트 (억제 : 8 내지 13)
많은 감사합니다, Neil. 나는 당신에게서 많은 것을 배웁니다. – MaiTiano
나는 이것을지지하지 않을 것이다. 장군 Zod는 단순한 농부 인'foo'와'bar' 전에 논해야합니다! –
* 나는 항상 시퀀스가 "foo, bar, baz, quux"가되었다고 생각했다. – caf