최근에는 그래픽 엔진 프로그램에 물리 엔진을 통합하는 작업을하고 있습니다. 전에 디버그는 안전하고 더 많은 정보를 통해 잘못된 위치를 알려주므로 항상 디버그 모드로 프로그램을 빌드합니다.디버그 모드 또는 릴리스 모드
내 프로그램에서 릴리스 모드에서 Assimp를 빌드했지만 여전히 디버그 모드에서 사용했습니다. 지금은 릴리스 모드에서 Bullet Physics를 빌드합니다. 성능의 차이는 디버그 모드에서 매우 다릅니다. 얼마나 느린지 알고 싶으면 this을 볼 수 있습니다.
중요한 것은
은 내가 디버그 모드에서이 * lib 디렉토리 파일을 사용할 수 없다는 것을, 그래서 질문, 또는 왜 당신이 디버그 모드에서 또는 다른 한편으로에 모드를 해제하도록 변경 않습니다. 또는 디버그 모드에서 릴리스 라이브러리를 사용 하시겠습니까? 당분간, Bullet Physics에서 Release 모드로 영구히 변경해야하며, 이것이 좋은지 나쁜지 모르겠다.편집 :
내가 유래에서 가능한 중복 기사가 많이 있기 때문에, 릴리스 및 디버그 모드에 대한 benifit을 알고 있지만, 여러분이 프로그램을 할 때 내가 알고 싶은 것은 무엇인지 결정 선택 또는 단지 performace 문제가 발생하기 때문에 나 같은 릴리스 모드로 프로그램을 다시 작성해야합니다. 가능한 한 중복 된 기사 사이에 약간 다른 점을 분명히하고 싶습니다.
이 질문에는 네 가지 사례가 있습니다.
사례 1. 이유로 인해, 디버그 모드에서 새 프로젝트 및 프로그램을 시작합니다 ....
사례 2. 새 프로젝트를 시작하고 ... 릴리스 모드로 프로그래밍하십시오.
사례 3 디버그 모드에서 일정 기간 동안 작동하지만 릴리스 모드로 변경됩니다.
사례 4 릴리스 모드에서 일정 기간 동안 작동하지만 디버그 모드로 변경됩니다.
저는 정말로 네 가지 경우에 어떤 결정이 필요한지 알고 싶습니다. 나는 Bullet Physics의 performace 덕분에 3을 맞이했다. 나는 release mode로 영원히 프로그램을 만들고, 다른 디버그 라이브러리를 release mode로 재 빌드하기로 결정했다. 경우 3, 질문은, 난 그냥 제 3 자 라이브러리를 사용하고, 그래서 어떤 이유로 디버그 모드를 사용해야합니까? 아니면 그냥 모드를 풀어 가려고?
경우 1 & 2의 경우 디버그 모드 또는 릴리스 모드에서 새 프로그램을 빌드하게하는 이유가 있습니까?
사례 4의 경우 사람이 릴리스 모드를 디버그 모드로 변경하는 이유를 생각할 수 없지만 실제 사례가있을 수 있습니다. 단지이 결정을 내릴 수있는 라이브러리를 만드는 것만 빼고.
제 질문에 대한 답변이 충분하지 않으면 알려주십시오.
코드에서 버그를 제거하려면 항상 디버그 빌드로 시작하십시오. 그런 다음 릴리스 빌드를 테스트하여 처음에 C++을 선택한 이유를 확인해야합니다. 예상되는 전체 데이터 세트를 사용하여 프로그램의 성능이 충분한 지 확인해야합니다. 그리고 그렇지 않다면 핫스팟을 찾기 위해 프로파일 러가 필요합니다. 릴리즈 빌드는 항상 배포하십시오. –
gdb, lldb, Visual Debugger와 같은 디버거는 릴리스 모드에서 사용하기가 매우 어렵습니다. 일부 기능이 누락되어 (인라인) 명령 재배치를 통해 단계 명령에서 앞뒤로 이동할 수 있습니다. 디버거는 버그를 찾는 데 매우 효율적인 도구이므로 사용하지 않으려는 경우가 아니면 디버그 모드로 시작하는 것이 좋습니다. – Franck
동일한 디버그 코드가 릴리스 빌드로 인해 프로그램을 중단시킬 수 있으므로 디버그 빌드가 자동으로 일부 정의되지 않은 동작 클래스를 처리하는 경향이 있으므로 집중적 인 테스트가 거의 독점적으로 릴리스 빌드에서 수행되어야한다는 점에 유의해야합니다. – Jack