2009-11-12 4 views
5

ASP.NET 2.0 웹 사이트에서 처리되지 않은 예외의 세부 정보를 기록합니다. 원본 파일 이름과 줄 번호를 기록하고 싶습니다. 그러나 예외가 발생하면 스택 추적에서이 값을 얻지 못합니다. 그 이유는 web.config 컴파일 설정 (프로덕션 사이트)에 debug = "false"가 있으므로 서버에 PDB 파일이 생성되지 않기 때문입니다. 릴리스 모드에서 디버그 기호 파일을 생성하도록 ASP.NET을 얻는 방법이 있습니까? 나는 사이트를 미리 컴파일하고 싶지 않다.릴리스 모드의 디버그 기호

+0

나는 100 % 확신 할 수는 없지만 가능한지 의심 스럽습니다. –

답변

5

OK, 답을 찾았습니다. debug = "false"를 설정하여 최적화를 얻은 다음 system.codedom 컴파일러 설정에서 compilerOptions = "/ debug : pdbonly"를 설정하여 기호를 가져올 수 있습니다. 관련 web.config의 발췌 내용은 다음과 같습니다.

<system.web> 
    .... 
    <compilation debug="false" defaultLanguage="c#"> 
    ... 
    </compilation> 
</system.web> 
<system.codedom> 
    <compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" 
     type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     compilerOptions="/debug:pdbonly"> 
     <providerOption name="CompilerVersion" value="v3.5"/> 
     <providerOption name="WarnAsError" value="false"/> 
    </compiler> 
    ... 
    </compilers> 
</system.codedom> 
+0

내 ASP.NET4.0 웹 사이트 프로젝트의 경우 CompilerInfo 배열을 파고 (CompilerInfo [] allCompilerInfo = CodeDomProvider.GetAllCompilerInfo()를 사용하여 가져옴), 버전 설정은 "Version = 4.0.0.0"이고 < providerOption name = "CompilerVersion"value = "v4.0"/> 그 밖의 모든 것은 동일합니다. 이야기의 도덕은 귀하의 마일리지가 다를 수 있으므로 프로젝트의 실제 설정을 확인하십시오. –

1

Im이 뭔가를 놓치지 않는 한, 디버그 & 릴리스 빌드의 차이가 최적화에 있습니다. pdb를 사용하여 일반 디버그 바이너리를 생성하고 프로젝트 설정에서 모든 최적화 설정을 활성화해야합니다. 아파치가 예외가 아니라면 ...

+0

그것은 ASP.NET 2.0 웹 사이트입니다. 저는 바이너리를 빌드하지 않을 것입니다. 모든 컴파일은 ASP.NET에 의해 즉시 수행되며 web.config 설정에 의해 제어됩니다. 그것은 어느 쪽이든 디버그 = "거짓"(최적화는 있지만 기호는 없음) 또는 디버그 = "참"(기호는 있지만 최적화는 없음) 중 하나 일 수 있습니다. – noj

관련 문제