리눅스 유틸에서 segment fault 가 발생합니다.

trymp의 이미지


다른사람이 만든 리눅스 유틸을 분석중인데요.

file write 를 할때 exception 이 발생하고 error message 를 출력할때

segment fault 가 나면서 죽습니다.

  vfwprintf(dest,fmtw,arglist);

이 부분에서 죽는데요. 왜 죽는지 디버깅하기가 어렵습니다.

dest 는 null 포인터가 아닌건 확인했구요.

두번째 인자와 3번째 인자가 가변인자리스트인데 arglist 이런건

어떻게 디버깅해야 하나요?

아시는 분 조언해 주시면 감사하겠습니다.

dbslqjftmu의 이미지

int vfwprintf (FILE* stream, const wchar_t* format, va_list arg);

두번째 인자가 const *예요. 상수 포인터
저 변수가 가리키는 값이 변경 불가능한건데 혹시 이게 영향을 줬을지 모르겠네요.

세벌의 이미지

컴파일 할 때 -Wall 옵션을 줘 보셔요. 디버깅 gdb 도구 연습해보셔요.

백연구원의 이미지

보통은 정확히 죽은 위치를 기반으로 backtrace를 거슬러 올라가며 원인이 되는 코드를 찾습니다.


소곤소곤