나는 다중 스레드 프로그램을 만들고있다. 모든 스레드를 제대로 닫을 수 있지만 끝 부분에 오류가 있습니다. 그러나 나는 단지 밖으로 인쇄 후이 얻을, 나는 GDB에서 디버깅을 시도파일을 열거 나 닫을 때 분할 오류가 발생 했습니까?
char *pid_fname;
FILE *file;
sprintf(pid_fname, "%s%d%s", "/proc/", pid, "/stat");
file = fopen(pid_fname, "r");
/* code */
fclose(file);
: 내 코드의 특정 부분을 주석을 통해, 나는 그것이 파일을 닫는/개방 처리하는 코드의 영역 내에 발견 segfault 이후의 'where':
#0 0x2f312f63 in ??()
#1 0x74617473 in ??()
#2 0xbfaee700 in ??()
#3 0xbfaee77c in ??()
#4 0x006a7810 in ??()
#5 0x00000000 in ??()
아무도 나에게 여기에서 어디로 가야할지에 대한 조언을 줄 수 있습니까?
: 당신이 정말로 버그에서 보호하려면 여전히 동적 할당에 대해 걱정하지 동안, 당신은 같은 것을 사용할 수 있습니다 함수'라고한다. 당신은 경고와 같은 런타임 크래시를 방지하는 데 도움이 될 수있는주의를 기울여야합니다. 또한 디버그 기호를 얻으려면 [디버깅 옵션] (http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options)을 사용해야합니다 (gcc를 사용한다고 가정) –