2012-06-24 3 views
3

매우 큰 ASP.NET 응용 프로그램에서 가능한 메모리 누수를 추적하려고합니다. 실제 환경에서이 도구를 사용하기 전에 WinDBG에 익숙해 지려고합니다.WinDBG - 기호 경로가 포함되지 않았습니다.

나는 매우 도움이되는 다음 기사의 지침을 따랐다 : http://humblecoder.co.uk/uncategorized/spotting-a-memory-leak-with-windbg-in-net. ASP.NET 프로세스의 "메모리 덤프"파일을 만들고 대리인이 문서에 지정된대로 메모리 누수를 일으키는 것으로 나타났습니다. 나는 다음 기사에서 "다음에 상징이 필요하다"라는 단락을 언급한다. File \ Symbol File Path를 사용하여 심볼 파일을 추가하지 않았습니다. WinDBG에서 아직 응용 프로그램을 디버그하고 기사의 나머지 단계를 수행 할 수있는 것 같습니다. ASP.NET 응용 프로그램에서는 심볼 경로가 필요하지 않습니까?

답변

2

.NET 어셈블리에는 모든 메서드 및 매개 변수의 이름을 비롯한 메타 데이터가 포함되어 있으므로 관리되는 스레드의 읽을 수있는 스택 추적을 얻는 데 기호가 필요하지 않습니다.

기호 하나가 제공 할 수있는 것은 파일 이름과 각 명령문의 줄 번호이므로 스택 추적에서 어떤 프레임이 소스 코드의 어느 줄과 일치하는지 더 쉽게 파악할 수 있습니다.

1

대부분의 관련 정보는 메타 데이터로 런타임에 사용할 수 있으므로 관리 코드에는 기호가 엄격하게 필요하지 않지만 네이티브 코드를 파헤 치면 기호를 포함하는 것이 매우 유용합니다.

.symfix 많은 시나리오에서 Microsoft의 공용 기호 서버를 사용하도록 WinDbg에 지시 할 수 있습니다. 이렇게하면 코드에서 모든 CLR 및 Win32 특정 호출에 대한 기호에 액세스 할 수 있습니다. 경로를 설정하면 .reload을 수행해야합니다.

코드에 네이티브 타사 어셈블리가 포함되어있는 경우 해당 PDB 파일의 위치를 ​​심볼 경로에 추가해야합니다. 이를 위해 .sympath 명령을 사용하십시오.

기호로드 문제를 해결하려면 !sym noisy 명령을 사용하십시오.

자세한 내용은 see this.

관련 문제