프로그램에서 일부 핫스팟의 정확한 시작 위치를 x86 머신 명령어 카운트로 추정해야합니다 (나중에 일부 에뮬레이터/시뮬레이터에서 실행될 수 있도록). 중단 점까지 실행되는 기계 명령어의 수를 세는 gdb를 사용하는 방법이 있습니까?gdb를 사용하여 머신 계산 방법 계산
물론 다른 대안이 있습니다. 핀과 같은 에뮬레이션/바이너리 계측 도구를 사용하고 명령어를 계산하는 동안 실행을 추적 할 수는 있지만 작업 할 모든 플랫폼에이 도구를 설치해야합니다. . 나는 거의 모든 리눅스 머신에서 사용할 수있는 도구가 필요하다.
gdb를 사용하면 큰 진보에 대해 큰 진보에 대해 실행할 수 있다고 생각합니다. 중단 점에 도달 할 때까지 거친 검색을 수행 한 다음 해상도를 줄이면 반복되지만 엄청나게 느립니다. 이것을 할 또 다른 방법이 있습니까?
GDB는이 목적에 완전히 부적합합니다. 응용 프로그램의 성능을 정확하게 측정하려면 [PAPI] (http://icl.cs.utk.edu/papi/)와 같은 것을 사용하십시오. 어쨌든 에디터가있는 곳이라면 계측 툴을 사용해야합니다. –
@mfukar 감사합니다. 그러나 GDB와 같이 어디에서나 쉽게 구할 수 있는지 확신 할 수 없습니다. 또한 GDB가 완전히 부적절하다고 말하지는 않을 것입니다. 추가하는 것은 아주 간단한 기능입니다. 이미 기계 inst 해결책으로 단계를 수행하는 방법을 알고 있습니다. 필요한 것은 어딘가에서 명령 수를 추적하는 것입니다. – Leeor
디버거의 프로그램을 'ptrace'하면 성능 (캐시 상태, TLB 누락 등)에 중요한 프로그램 상태가 변경됩니다. 디버거에서 프로그램을 실행하는 동안 얻을 수있는 결과는 해당 상황에서만 적용됩니다. –