2010-03-04 4 views
8

내 응용 프로그램의 각 스레드가 callgrind를 "비싸다"는 것이 어떻게 보이는지 알고 싶습니다. 나는 --separate-thread=yes 옵션을 사용하여 전체 응용 프로그램에 대한 콜 그리드 파일을 제공하고 스레드 당 하나의 파일을 제공합니다.callgrind/kcachegrind를 사용하여 스레드 당 통계보기

이것은 주어진 스레드의 프로파일을 보는 데 유용하지만, 실제로 원하는 것은 각 스레드의 CPU 시간을 정렬 한 목록이므로 어떤 스레드가 가장 큰 돼지인지 확인할 수 있습니다.

답변

3

Valgrind/Callgrind는이 동작을 허용하지 않습니다. kcachegrind도 마찬가지지만 좋은 개선이라고 생각합니다. 어쩌면 일부 메일 링리스트에서 답변을 찾을 수 있습니다.

작동하지만 정말 방법을 지루하게하는 옵션 --separate-thread=no을 사용하고 각 스레드 다른 함수 이름이나 클래스 이름을 사용하도록 코드를 업데이트 할 수 있습니다. 코드 복잡도에 따라 대답이 될 수 있습니다 (1computeData(), 2computeData() ... 사용)

+0

그래, 이것은 내가 도달 한 것과 거의 같은 결론이다. 오픈 소스 기여에 대한 좋은 생각이라고 생각해보십시오! –

-2

kcachegrind에서 여러 프로필을 동시에 열면됩니다.

관련 문제