내 프로그램 실행 중 각 기능에 소요 된 시간을 계산하는 데 gprof
을 사용하고 있습니다.gprof를 사용하면 프로그램 실행을 차단하는 이유는 무엇입니까?
지난 주에 CPU 사용량이 100 %에 도달했을 때 프로그램을 시작할 수 없다는 사실을 알게되었습니다.
- 거의 하루 동안 코드가 실행되고 아무 것도 변경되지 않았습니다.
- 어떤 경우에는 100 %에 도달 CPU 사용이 불가피 특별히 나는 그것이 "
stress
"도구의 도움으로, 자원의 최대 양을 사용하는 동안 내 시스템을 강조하고 프로그램을 테스트 할 때 http://weather.ou.edu/~apw/projects/stress/
나는 스레드 읽고 :
을하고 마이크 Dunlavey의 응답을 읽어 :
이렇게 현지화되지 않은 문제는 무엇입니까? 그건 중요하지 않니? 주장하지 않은 gprof에 기대를 두지 마십시오. 은 측정 도구 일 뿐이며 CPU 바운드 작업 만 수행합니다.
하고 높은 점수를 가지고도 노먼 램지의 응답 :
Valgrind has an instruction-count profiler with a very nice visualizer called KCacheGrind. As Mike Dunlavey recommends, Valgrind counts the fraction of instructions for which a procedure is live on the stack, although I'm sorry to say it appears to become confused in the presence of mutual recursion. But the visualizer is very nice and light years ahead of gprof
합니다. 스레드가 닫혀 등이 사전
P.S.에서
감사를 수행 할 수있는 좋은 방향 인 경우
하지만
는 비 건설적으로, 궁금 해서요 사전
안녕하세요 마이크와 귀하의 응답을 주셔서 감사합니다 – user2307229
정확하게, 내가 gprof 및 CPU 100 %를 사용하지 않을 때 내 메인의 첫 번째 "환영 로그 printf"도 인쇄되지 않습니다.
또한 ** Oprofile **을 설치했는데 어떤 일이 벌어지는 지보고 알려줄 것입니다! – user2307229
@ user2307229 : 시작될 때 프로그램에 무한 루프가있는 것처럼 들립니다. 무한 루프를 찾으려면 GDB에서 실행하십시오. 출력 창에서 Control-C를 눌러 중단하십시오. GDB 윈도우에서 "스레드 1"을 실행하여 GDB가 프로그램의 스레드를 찾고 있는지 확인한 다음 "bt"를 입력하여 호출 스택을 표시합니다. 루프가 그 중 하나에 있기 때문에 스택의 각 레벨에서 코드를 검사하십시오. 여전히 명확하지 않은 경우 반복해서 볼 때까지 한 단계 씩 실행하십시오. –