Linux에서 실행되는 C 애플리케이션의 일부로 라이브러리 함수를 사용하여 스크립트를 호출합니다 system( )
. 이 스크립트는 연결된 USB 플래시 드라이브를 마운트 해제합니다. 매우 적은 횟수(7~8,000회 중 1회)의 반복으로 분할 오류가 발생합니다.
/bin/sh: 라인 1: 18083 분할 오류(코어 덤프)
디버그 인쇄를 통해 시스템()으로 인해 오류가 발생했음을 확인했습니다. 이는 쉘 충돌인 것으로 보입니다. 분할 오류가 발생하는 이유를 이해해야 합니다.
내 스크립트에는 다음 코드가 포함되어 있습니다.
mount | grep "USB"
ret=$?
if [ $ret == "0" ]; then
umount -l /mnt/USB
ret=$?;
if [ $ret -eq 0 ]; then
rmdir /mnt/USB
fi
fi
이 플랫폼에서는 gdb를 사용할 수 없으며 이 문제가 얼마나 자주 발생하는지 고려하면 디버깅하기가 어렵습니다.
답변1
스트레스도움이 되는. AFAIK 기본 yum/apt/whatever 저장소에서 사용할 수 있습니다.
strace
Linux용 진단, 디버깅 및 안내 사용자 공간 유틸리티입니다. 시스템 호출, 신호 전달 및 프로세스 상태 변경을 포함하여 프로세스와 Linux 커널 간의 상호 작용을 모니터링하고 변조하는 데 사용됩니다.
시스템 관리자, 진단 전문가 및 문제 해결사는 소스 코드를 추적하기 위해 다시 컴파일할 필요가 없기 때문에 쉽게 사용할 수 없는 프로그램 문제를 해결하는 데 유용하다는 것을 알게 될 것입니다.