시뮬레이션 디버깅
호스트 시스템에서 시뮬레이션이 실행 중이므로, 데스크탑 개발 도구를 사용할 수 있습니다.
CLANG 주소 새니타이저(Mac OS, Linux)
Clang 주소 새니타이저는 정렬(버스) 오류 및 분할 오류와 같은 기타 메모리 오류를 찾는 데 도움이 됩니다. 아래 명령은 올바른 컴파일 옵션을 설정합니다.
Valgrind
또는
SITL 시뮬레이션 중에 valgrind를 사용하려면:
조합 시작
SITL은 디버거를 연결하거나 연결하지 않고, jMAVSim 또는 Gazebo를 시뮬레이션 백엔드로 사용하여 시작할 수 있습니다. 그 결과 아래와 같은 시작 옵션이 나타납니다.
여기서 마지막 매개변수는 <viewer_model_debugger> 삼중항입니다(밑줄 3개를 사용하면 기본 "iris" 모델을 의미함). 그러면, 디버거가 시작되고 SITL 애플리케이션이 시작됩니다. 디버거 셸에서 실행을 중지하려면 CTRL-C
를 입력합니다.
DriverFrameworks 스케줄링이 디버깅 세션을 방해하지 않도록 하려면, SIGCONT
를 LLDB 및 GDB에서 마스킹합니다.
또는 GDB의 경우:
그 후 lldb 또는 gdb 셸은 일반 세션처럼 작동합니다. LLDB/GDB 문서를 참고하십시오.
마지막 매개변수인 <viewer_model_debugger> 트리플렛은 실제로 빌드 디렉토리에서 make에 전달되므로
명령은 다음 명령과 같습니다.
빌드 디렉토리에서 사용 가능한 make 대상의 전체 목록은 다음 명령어로 조회할 수 있습니다.
그러나, 편의를 위해 <viewer_model_debugger> 삼중항만 있는 목록이 다음 명령으로 출력됩니다.
컴파일러 최적화
posix_sitl_*
에 대해 구성할 때 주어진 실행 파일 및/또는 모듈(cmake에서 add_executable
또는 add_library
로 추가)에 대한 컴파일러 최적화를 억제할 수 있습니다. 이것은 디버거를 사용하여 코드를 단계별로 실행하거나, 그렇지 않으면 최적화 변수를 인쇄시에 편리합니다.
그렇게 하려면 환경 변수 PX4_NO_OPTIMIZATION
을 최적화 없이 컴파일하는 대상과 일치하는 세미콜론으로 구분된 정규식 목록으로 설정합니다. 이 환경변수는 설정이 posix_sitl_*
이 아닌 경우에는 무시됩니다.
예를 들어,
대상의 최적화를 억제합니다: 플랫폼__posix__px4_layer, modules__systemlib, modules__uORB, 예제__px4_simple_app, modules__uORB__uORB \_tests 및 px4.
이러한 정규식과 일치할 수 있는 대상은 다음 명령으로 출력합니다.
Last updated