문제

사용하려고합니다 확인하다 내 C 응용 프로그램의 단위 테스트 프레임 워크. 그러나 두 가지 점 때문에 디버거 (GDB)를 사용할 수 없습니다.

  • 먼저 복잡한 매크로를 사용하십시오 (START_TEST 그리고 END_TEST) 그리고 디버거는이 두 매크로 사이에 내 코드에 중단 점을 넣는 데 어려움을 겪고 있습니다 (실제로 소프트웨어 중단 점을 넣을 수는 있지만 GDB에서는 볼 수 없습니다).

  • 둘째, 점검 중단의 행동을 재정의하여 일종의 예외를 정의하십시오. 따라서 하드웨어 브레이크 포인트를 넣으려고 할 때 테스트 실패로 고려하기 때문에 하드웨어 브레이크 포인트를 사용하려고하면 테스트가 실패하고 종료되었습니다.

누구든지 이미이 문제를 충족하고 해결책이 있습니까?

도움이 되었습니까?

해결책

를보세요 포크 모드 없음:

일반적으로 포크를 확인하여 별도의 주소 공간을 만듭니다. 이를 통해 전체 테스트 프로그램을 중단하지 않고 신호 또는 조기 출구를 잡고보고 할 수 있으며 일반적으로 매우 유용합니다. 그러나 세그먼트 화 결함 또는 기타 프로그램 오류가 발생한 이유를 디버그하려고 할 때 포킹으로 인해 디버깅 도구를 사용하기가 어렵습니다.

다른 팁

실제로 포크 모드도 사용할 수 있습니다.

GDB에는 포크 동작과 관련된 두 가지 흥미로운 옵션이 있습니다.
- detach-on-fork (이것을 거짓으로 설정)
- follow-on-fork (부모 또는 자녀; 나는 항상 아이를 낳습니다)

이렇게하면 GDB가 아동 과정을 따릅니다. 아동 프로세스가 종료되면 inferior 명령.

노력하다 수도꼭지 (모든 프로토콜 테스트)… 구현, 선박 및 디버그가 훨씬 쉽습니다. 또한 만들기가 매우 쉽습니다 valgrind-인식하고 더 잘하는 경향이 있습니다 gdb.

나는 읽었다 이것 그리고 그는 매우 간단한 해결책을 제안합니다.

gdb > set environment CK_FORK=no

그것은 나를 위해 일했다. 그런 다음 테스트 케이스가 호출하는 함수 (즉, 테스트중인 기능)에서 중단 점을 설정할 수 있었으며 올바른 장소에서 깨졌습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top