2009-09-15 6 views
2

.NET Framework 3.5 SP1을 실행하는 Windows 7 Enterprise RTM (64 비트) 데스크톱에서 SQL Server Compact 문제를 통해 디버깅하려고합니다. 응용 프로그램이 지속적으로 충돌하고 Visual Studio 2008 SP1 용 .NET Framework 디버깅을 설정하려고합니다. 인터넷의 주위에 흩어져있는 자원을 사용하여, 우리는 옵션 설정 ->옵션 -Windows 7에서 .NET 소스 디버깅

  • 기호 서버 = http://referencesource.microsoft.com/symbols
  • 메뉴 도구>디버깅을 ->그냥 내 코드 = 사용 안함
  • 메뉴 도구 ->옵션 ->디버깅-
  • 를 사용> 이 .NET 프레임 워크 디버깅 사용 =
  • 도구 ->옵션 ->디버깅 ->사용 = 원본 서버 지원 사용

우리를 응용 프로그램을 실행하면 소스로 이동할 수 없으며 여전히 오류가 발생합니다.

이 위치에 소스 코드가 없습니다.

우리는 SQL 서버 컴팩트 기호가로드 한 것을 나타내는 스택 추적을받을 수 있나요 우리가 오류 대화 상자에서 세부 사항을 클릭하면, 우리는 SQL 서버 컴팩트 PDB 파일이 올바르게로드되었는지를 나타내는 메시지가 표시됩니다.

나는 블로그 게시물이가되지는 Windows 7 용 를 업데이트되고 문자, 아직 Visual Studio 2008 SP1 .NET Framework Source Debugging에 문제가 있음을 나타내는 발견했다.

그러나이 문제에 대해 공식적인 답변을 찾을 수 없습니다. 제가 빠진 것이 있습니까? Windows 7 기호가 올바르지 않습니다. 그렇다면 업데이트시기는 언제입니까?

내 Windows 7 빌드는 64 비트입니다. 또한 Windows Vista 64 비트에서이 동일한 시나리오를 테스트 한 결과 동일한 문제와 오류가 발생했습니다. 그것은 PDB를로드했지만, 그곳에는 소스 코드가 없다고 주장한다.

+0

.NET Mass Downloader는 Windows 7, http://www.codeplex.com/NetMassDownloader에서도 실패하므로 사용자의 가정은 사실임이 입증되었습니다. 왜 공식 단어가 필요한거야? Windows 7은 아직 일반화되지 않았습니다. –

+1

그것이 사실임을 가리키는 다른 증거를 보는 것이 좋습니다. 그러나 Windows 7 Enterprise는 많은 .Net 개발자가 있다고 가정하는 비즈니스 사용자가 널리 사용할 수 있습니다. 따라서 소스 디버깅이 손상되었는지 여부에 대한 공식적인 단어를 구하는 것이 너무 많다고 생각하지 않습니다. 그렇다면 해결 될 때도 있습니다. –

답변

1

내 생각에 DLL 파일은 릴리스 빌드이므로 JIT 컴파일러는 일부 기능 호출 (종종 작은 함수를 인라인하는)을 최적화합니다. 즉, 런타임에서 jitted 코드를 PDB로 다시 변환하려고 시도하면 혼동을 일으 킵니다.

응용 프로그램 루트에 .ini 파일을 추가하십시오. 따라서 앱이 prog.exe 인 경우 prog.ini에 다음 내용을 추가하십시오.

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1 
AllowOptimize=0 

이렇게하면 JIT 컴파일러가 호출을 최적화하지 않게되고 PDB 파일이 코드에서 올바른 호출을 참조하게됩니다.응용 프로그램을 다시 시작해야하며 최적화없이 실행 중이기 때문에 디버그 빌드 수준이 느려지지만 올바르게 디버거를 연결할 수 있어야합니다.

+1

감사하지만 그들은 확실히 DLL을 디버그했습니다. –

0

프로젝트 빌드 속성에는 실행할 아키텍처 (x86 또는 x64)를 선택할 수있는 옵션이 있습니다. 디버깅을 위해 x86으로 전환 해보십시오. 디버그하여 문제점을 찾을 수 있습니다.

관련 문제