디버거에서 심볼 서버 설정하기
디버그 심볼은 더 나은 디버깅 세션을 가능하게 한다. 실행 파일과 동적 라이브러리에 포함된 함수 정보를 제공하고, 깔끔한 호출 스택을 얻는 데 필요한 정보를 알려준다. 심볼 서버를 사용하면 사용자가 대용량 디버깅 파일을 다운로드할 필요 없이 디버거가 자동으로 올바른 심볼, 바이너리, 소스 코드를 로드할 수 있다. 이 서버는 마이크로소프트의 심볼 서버와 유사하게 동작하므로, 관련 문서를 참고하면 도움이 된다.
디버거에서 심볼 서버 설정하기
디버그 심볼은 더 나은 디버깅 세션을 가능하게 한다. 실행 파일과 동적 라이브러리에 포함된 함수 정보를 제공하며, 깔끔한 호출 스택을 얻는 데 필요한 정보를 준다. 심볼 서버는 사용자가 큰 디버깅 파일을 다운로드하지 않아도 디버거가 올바른 심볼, 바이너리, 소스 코드를 자동으로 로드할 수 있게 한다. 이 서버는 마이크로소프트의 심볼 서버와 유사하게 동작하므로, 해당 문서가 도움이 될 수 있다.
릴리스된 Electron 빌드는 최적화가 많이 되어 있어 디버깅이 쉽지 않을 수 있다. 디버거가 모든 변수의 내용을 보여주지 못할 수 있으며, 인라이닝, 꼬리 호출, 기타 컴파일러 최적화로 인해 실행 경로가 이상하게 보일 수 있다. 이를 해결할 수 있는 유일한 방법은 최적화되지 않은 로컬 빌드를 만드는 것이다.
Electron의 공식 심볼 서버 URL은 https://symbols.electronjs.org이다. 이 URL을 직접 방문할 수는 없으며, 디버깅 도구의 심볼 경로에 추가해야 한다. 아래 예제에서는 서버에서 PDB를 반복적으로 가져오지 않도록 로컬 캐시 디렉터리를 사용한다. c:\code\symbols
를 자신의 컴퓨터에 적합한 캐시 디렉터리로 바꾸면 된다.
Windbg에서 심볼 서버 사용하기
Windbg의 심볼 경로는 별표 문자로 구분된 문자열 값으로 설정된다. Electron 심볼 서버만 사용하려면 심볼 경로에 다음 항목을 추가한다(참고: c:\code\symbols
는 다운로드한 심볼을 저장할 원하는 위치로 변경 가능):
SRV*c:\code\symbols\*https://symbols.electronjs.org
이 문자열을 환경 변수 _NT_SYMBOL_PATH
로 설정하거나, Windbg 메뉴를 사용하거나, .sympath
명령어를 입력하여 적용한다. Microsoft의 심볼 서버에서도 심볼을 가져오려면, 해당 서버를 먼저 나열해야 한다:
SRV*c:\code\symbols\*https://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols\*https://symbols.electronjs.org
Visual Studio에서 심볼 서버 사용하기
문제 해결: 심볼이 로드되지 않는 경우
Windbg에서 심볼이 로드되지 않는 이유를 확인하려면 다음 커맨드를 입력한다:
> !sym noisy
> .reload /f electron.exe