스레드 오류 탐지를 위해 Helgrind 또는 DRD를 사용해야 합니까?
Valgrind에는 스레드 오류 탐지를 수행하는 두 가지 도구가 있는 것 같습니다.헬그린드와 DRD.이 도구들은 상당히 유사합니다.
제 주된 질문은 다음과 같습니다. 멀티 스레드 코드를 확인하기 위해 다른 것 대신 하나를 언제 사용해야 합니까?
좀 더 넓게 보면, 왜 두 가지 도구가 존재합니까?저는 그들이 완전히 불필요한 것은 아니라고 생각합니다.중요한 차이점은 무엇입니까?일반적으로 두 도구를 통해 코드를 실행할 계획을 세워야 합니까?
Helgrind는 잠금 순서 위반을 감지할 수 있지만 대부분의 프로그램에서 DRD는 분석을 수행하는 데 필요한 메모리가 적습니다.또한 DRD는 분리된 스레드를 지원합니다.미묘한 차이도 더 많습니다. 더 알고 싶다면 각 설명서를 비교해 보십시오.http://valgrind.org/docs/manual/hg-manual.html 및 http://valgrind.org/docs/manual/drd-manual.html 도 참조하십시오.
멀티 스레드 코드를 확인하려면 다른 코드 대신 하나를 언제 사용해야 합니까?
해당 코드를 확인할 대상에 따라 다릅니다.
데이터 레이스를 확인하려면 ThreadSanitizer를 사용할 수 있습니다.
DRD 등과의 비교.
음소거 이외의 POSIX 동기화 프리미티브(예: 세마포어, 장벽, 조건 변수 등)를 사용하는 경우 DRD는 실행할 가치가 있습니다. Helgrind가 감지하지 못하는 일부 미묘한 오용을 식별할 수 있습니다.
그러나 DRD는 Helgrind보다 훨씬 리소스 집약적인 것으로 보입니다(3.14.0을 사용하는 경우 CPU 오버헤드가 엄청나게 많은 것 같습니다).
한 가지 더 고려해야 할 사항: valgrind 버전 3.6.0에서 DRD는 pthread spinlock을 지원하지만 helgrind는 지원하지 않습니다.저는 3.7.0을 사용해 본 적은 없지만, 릴리스 노트를 통해 이것이 변하지 않았다고 믿게 되었습니다.
언급URL : https://stackoverflow.com/questions/8157669/should-i-use-helgrind-or-drd-for-thread-error-detection
'programing' 카테고리의 다른 글
Spring Boot 2.0.x가 특정 프로파일에 대해 보안을 사용하지 않도록 설정함 (0) | 2023.09.28 |
---|---|
다른 변수의 thymelephth:필드 값을 설정하는 방법 (0) | 2023.09.28 |
iOS에 파일 쓰기 (0) | 2023.09.28 |
VBA를 통해 CSV 파일 열기(성능) (0) | 2023.09.28 |
wocommerce 사용자 지정 ajax 탑 카트 (0) | 2023.09.28 |