2010-02-02 1 views
2

과부하 상태에서만 충돌하는 C/C++ 응용 프로그램이 있습니다. 일반적으로 valgrind 및 gprof를 사용하여 메모리 누수 및 프로파일 링 문제를 디버깅합니다. 실패율은 100 만회에서 약 100과 같습니다. 이것은 일관된 것입니다. 내 응용 프로그램에 대한 트래픽을 재생산하는 대신, 어떻게 든 valgrind에서 실행되는 응용 프로그램의 디버그 빌드에서 사용 가능한 리소스를 표면적으로 제한 할 수 있습니까?리눅스에서 응용 프로그램 디버깅을위한 리소스 사용 제한.

+0

로드가 많은 경우 CPU 바운드 또는 IO 바운드입니까? 램? 또한 핵심 파일을 검토했다고 가정합니다. – rleir

+0

핵심 파일 (다른 위치에 배포)이 없기 때문에이 파일을 재현 할 수 없습니다. –

답변

2

ulimit은 일부 리소스에 대한 하드 제한을 설정하기 위해 bash에서 사용할 수 있습니다.

+1

모든 쉘은 Bash뿐만 아니라'ulimit'을 가져야합니다 ... http://www.opengroup.org/onlinepubs/000095399/utilities/ulimit.html OP를 제외하고'ulimit' 쉘 내장 명령은'getrlimit '와'setrlimit' 함수를 사용하면 C/C++에서 직접 사용할 수 있습니다. – ephemient

0

그것은 경쟁 조건이 될 수있는 것처럼 들리지만 - '헬 그 린드'밸 글린 도구를 사용해 보셨습니까?

1

Linux에서는 일부 메모리 ulimits 만 실제로 작동합니다.

예를 들어, 나는 데이터 세그먼트 (나는 RSS라고 생각합니다)가 실제로 작동한다고 생각하는 ulimit -d을 생각하지 않습니다.

내 경험으로 Evolution (전자 메일 클라이언트)을 통제하에 두는 것을 기억하면서 ulimit -v (가상 메모리)이 저에게 효과적이었습니다.