체크를 사용하여 C의 디버깅 장치 테스트
-
22-07-2019 - |
문제
사용하려고합니다 확인하다 내 C 응용 프로그램의 단위 테스트 프레임 워크. 그러나 두 가지 점 때문에 디버거 (GDB)를 사용할 수 없습니다.
먼저 복잡한 매크로를 사용하십시오 (
START_TEST
그리고END_TEST
) 그리고 디버거는이 두 매크로 사이에 내 코드에 중단 점을 넣는 데 어려움을 겪고 있습니다 (실제로 소프트웨어 중단 점을 넣을 수는 있지만 GDB에서는 볼 수 없습니다).둘째, 점검 중단의 행동을 재정의하여 일종의 예외를 정의하십시오. 따라서 하드웨어 브레이크 포인트를 넣으려고 할 때 테스트 실패로 고려하기 때문에 하드웨어 브레이크 포인트를 사용하려고하면 테스트가 실패하고 종료되었습니다.
누구든지 이미이 문제를 충족하고 해결책이 있습니까?
해결책
를보세요 포크 모드 없음:
일반적으로 포크를 확인하여 별도의 주소 공간을 만듭니다. 이를 통해 전체 테스트 프로그램을 중단하지 않고 신호 또는 조기 출구를 잡고보고 할 수 있으며 일반적으로 매우 유용합니다. 그러나 세그먼트 화 결함 또는 기타 프로그램 오류가 발생한 이유를 디버그하려고 할 때 포킹으로 인해 디버깅 도구를 사용하기가 어렵습니다.
다른 팁
실제로 포크 모드도 사용할 수 있습니다.
GDB에는 포크 동작과 관련된 두 가지 흥미로운 옵션이 있습니다.
- detach-on-fork
(이것을 거짓으로 설정)
- follow-on-fork
(부모 또는 자녀; 나는 항상 아이를 낳습니다)
이렇게하면 GDB가 아동 과정을 따릅니다. 아동 프로세스가 종료되면 inferior
명령.
나는 읽었다 이것 그리고 그는 매우 간단한 해결책을 제안합니다.
gdb > set environment CK_FORK=no
그것은 나를 위해 일했다. 그런 다음 테스트 케이스가 호출하는 함수 (즉, 테스트중인 기능)에서 중단 점을 설정할 수 있었으며 올바른 장소에서 깨졌습니다.