Published using Google Docs
Visual Studio에서 외부 소스를 포함한 디버깅 수행
Updated automatically every 5 minutes

출처: https://blog.yucchiy.com/2022/01/debugging-external-sources-with-vs

Debugging External Sources with Visual Studio - Visual Studio Blog

위 글에 대한 설명이다.

외부 라이브러리를 사용하고 있으면, 브레이크 포인트에 의한 디버그로, 라이브러리측의 소스 코드도 스텝 인하고 싶은 경우가 있을 것이다.

Visual Studio 2022부터 아래 그림과 같이 솔루션 탐색기에 외부 소스 노드가 추가 되었다. 이것은 디버깅 중에 표시되며 소스 서버 정보를 포함하여 로드된 심볼 정보(.pdb)가 표시된다.

설정하면 (이것은 나중에 설명) 디버깅 중에 외부 소스로 스텝인을 시도하면 소스 서버에서 해당 소스를 가져 와서 실제로 스텝을 실행할 수 있다. 물론 실제 코드는 솔루션 탐색기에서도 볼 수 있다.

이렇게하면 외부 소스를 포함한 디버깅이 훨씬 쉬워진다.

설정

먼저 메뉴에서 도구 > 옵션을 열고 디버그 항목에서 내 코드만 사용을 선택 취소한다.

그런 다음 '디버그' 왼쪽 토글을 클릭하고 나오는 '심볼'을 클릭하고 '심볼 파일(.pdb) 위치'에서 디버깅에 추가할 심볼 서버를 선택한다. Microsoft 심볼 서버를 추가하면 표준 라이브러리 등이, NuGet.org 심볼 서버를 추가하면 nuget으로 추가한 라이브러리를 외부 소스로 추가할 수 있다.

또한 "심볼 자동 로드 설정"에서 로드되는 모듈을 세밀하게 제어할 수 있다. 의존하는 모듈이 늘어나면, 서버로부터의 취득에 시간이 걸리므로, 신경이 쓰이는 경우는 이것을 설정하는 것이 좋을 것이다. 우선 전부는 때는 「제외되어 있지 않은 모든 모듈을 읽어들인다」를 체크하면 좋다고 생각한다.

동작 확인

그리고는 일반적으로 디버그에서 외부 소스에 스텝인하면, 적절하게 심볼 서버로부터 소스를 취득한다. 아래 그림과 같이 중단점을 붙여 외부 라이브러리의 메서드로 스텝인 한다.

처음인 경우는 다운로드 선택 창이 나타난다.

그러면 아래 그림과 같이 필요에 따라 심볼 서버에 심볼 로드가 실행됩니다.

로드가 끝나면 아래 그림과 같이 외부 소스에서 디버깅을 수행할 수 있다.

덧붙여서 외부 소스의 취득은, 의존이 많으면 상당히 시간이 걸린다.

요약

Visual Studio 2022에서 추가된 외부 소스를 포함한 디버깅 실행을 소개했다.

라이브러리의 거동에 대해, 소스 코드 레벨에서 이해하고 싶을 때 선택의 하나로서 알아두면 편리할 것이다.