programing

스레드 오류 탐지를 위해 Helgrind 또는 DRD를 사용해야 합니까?

muds 2023. 9. 28. 08:52
반응형

스레드 오류 탐지를 위해 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

반응형