문제 해결
OpenShot에서 정지, 충돌 또는 오류 메시지와 같은 문제가 발생하는 경우, 문제 해결에 유용한 다양한 방법이 있습니다.
Windows 11 응답 없음
Windows 11에서 정지가 발생하면, 이는 PyQt5와 Windows 11의 알려진 문제로, Qt의 접근성 기능과 관련이 있습니다. OpenShot에서 Ctrl+C 를 누르면 (Windows 11에서만) 이 문제가 발생합니다. OpenShot이 응답하지 않게 되고 메모리 누수도 발생합니다(즉, OpenShot이 응답하지 않는 시간이 길어질수록 메모리 누수가 커져 결국 OpenShot이 충돌하거나 사용자가 프로세스를 종료할 때까지 계속됩니다).
간단한 해결책은 Windows 11에서 Ctrl+C 를 피하고 대신 마우스 오른쪽 클릭 복사/붙여넣기 메뉴를 사용하는 것입니다. 또 다른 해결책은 “복사” 단축키를 Ctrl+C 에서 Alt+C 와 같이 다른 키로 재설정하는 것입니다. OpenShot 환경 설정에서 키보드 매핑을 변경할 수 있습니다. 키보드 를 참조하세요.
Windows에서 GDB로 디버깅하기
Windows 10/11에서 OpenShot이 충돌하거나 정지하는 경우, 다음 단계별 지침이 충돌 원인을 파악하는 데 도움이 됩니다. 이 지침은 충돌 위치에서 OpenShot 소스 코드의 스택 추적을 표시합니다. 이 정보는 개발팀에 매우 유용하며, 버그 보고서에 첨부하면 문제 해결이 빨라집니다.
최신 데일리 빌드 설치
디버거를 연결하기 전에 OpenShot의 ** 최신 버전** 을 다운로드하세요: https://www.openshot.org/download#daily. 이 버전을 기본 위치인 C:\Program Files\OpenShot Video Editor\ 에 설치하세요. Windows에서 OpenShot 디버깅에 대한 자세한 지침은 ` 이 위키 <https://github.com/OpenShot/openshot-qt/wiki/Windows-Debugging-with-GDB>`_ 를 참조하세요.
MSYS2 설치
Windows용 OpenShot은 MSYS2라는 환경에서 컴파일됩니다. GDB 디버거를 실행 파일 openshot-qt.exe 에 연결하려면 먼저 MSYS2를 설치해야 합니다. 이 단계는 한 번만 필요합니다.
MSYS2 다운로드 및 설치: http://www.msys2.org/
MSYS2 MinGW x64명령 프롬프트 실행 (예:C:\msys64\msys2_shell.cmd -mingw64)모든 패키지 업데이트 (다음 명령어 복사/붙여넣기):
pacman -SyuGDB 디버거 설치 (다음 명령어 복사/붙여넣기):
pacman -S --needed --disable-download-timeout mingw-w64-x86_64-toolchain
GDB 디버거로 OpenShot 실행
MSYS2 MinGW x64 명령 프롬프트 실행 (예: C:\msys64\msys2_shell.cmd -mingw64)
PATH 업데이트 (다음 명령어 복사/붙여넣기):
export PATH="/c/Program Files/OpenShot Video Editor/lib:$PATH"
export PATH="/c/Program Files/OpenShot Video Editor/lib/PyQt5:$PATH"
GDB 디버거에 OpenShot 로드 (다음 명령어 복사/붙여넣기):
cd "/c/Program Files/OpenShot Video Editor"/
gdb openshot-qt.exe
GDB 프롬프트에서 OpenShot 실행 (다음 명령어 복사/붙여넣기):
run --debug
디버깅 정보 출력
GDB가 연결된 상태로 OpenShot이 성공적으로 실행되면, OpenShot에서 충돌이나 정지를 유발하면 됩니다. 충돌이 발생하면 MSYS2 MinGW64 터미널로 돌아가 다음 명령어 중 하나를 입력하고 ENTER를 누르세요. 보통 처음 입력하는 명령어는 bt (백트레이스)입니다. 더 많은 명령어가 아래에 나와 있습니다.
(gdb) run (launch openshot-qt.exe)
(gdb) CTRL + C (to manually break out OR wait for a crash / segmentation fault)
(gdb) bt (Print stack trace for the current thread #)
(gdb) info threads (to view all threads, and what they are doing. Look for `__lll_lock_wait` for Mutex/deadlocks)
(gdb) thread 35 (Switch to thread number, for example thread 35)