문제

릴리스 모드에서 .NET 어셈블리 빌드/배포 된 .NET 어셈블리 빌드의 스택 추적에 라인을 표시하는 방법이 있습니까?

업데이트:

내 응용 프로그램은 3 개의 클래스 라이브러리 프로젝트와 1 개의 ASP.NET "웹 사이트"프로젝트로 나뉩니다. 내가 추적하려는 오류는 3 개의 클래스 라이브러리 프로젝트 중 하나에 있습니다. 클래스 라이브러리 프로젝트에 대한 PDB 파일 만 배포했습니다.

스택 추적에는 여전히 줄 번호가 표시되지 않습니다. 스택 추적에서 줄 번호를 얻으려면 모든 프로젝트에 대해 PDB 파일을 배포해야합니까?

작업 솔루션

각 응용 프로그램에 대한 PDB 파일 배포 라인 번호 문제가 수정되었습니다.

도움이 되었습니까?

해결책

  • 스택 추적 라인 번호를보고 싶은 프로젝트의 속성 창으로 이동하십시오.
  • "수직 탭"빌드를 클릭하십시오.
  • "릴리스"구성을 선택하십시오. 디버그 상수 매개 변수를 확인하십시오.
  • "최적화 코드"매개 변수를 선택 취소하여 상감 코드로 가끔 추적 문제를 피하십시오 (이 단계는 필수적이지 않음).
  • 고급 ... 버튼을 누르고 출력 -> 디버그 정보 -> PDB 전용을 선택하십시오.
  • 생성 된 .pdb 파일을 어셈블리에 배포하십시오.

아래 의견과 함께 구현 :

  • 확인해야 할 또 다른 사항은 "Package/Publish Web"섹션에 있으며 "생성 된 디버그 기호 제외"확인란도 확인되지 않았습니다.

다른 팁

VS2012에서는 속성의 패키지/게시 웹 섹션에서 "생성 된 디버그 기호"제외 "를 선택 취소해야합니다.

내 해결책

파일을 실행할 수있는 폴더에 PDB 파일을 복사하십시오.

이제 EXE 파일을 실행할 때 줄 번호를 볼 수 있습니다.

이것이 이유입니다

http://msdn.microsoft.com/en-us/library/ee416588%28v=vs.85%29.aspx

과거에 오류를 추적하기 위해 릴리스 빌드로 PDB 파일을 배포해야 할 필요성이 있다고 생각하는 문제가 발생했습니다. 그 이유는 당신이 말했듯이, 예외가 매우 큰 방법에서 예외가 발생했고 그것이 일어나고있는 곳을 정확하게 정확하게 정확히 정확하게 지적 할 수 없었기 때문입니다.

이는이 방법이 더 작고 더 세분화 된 방법으로 리팩토링되어야한다는 것을 나타낼 수 있습니다. 하나의 크기는 모든 대답에 맞지 않지만이 접근법은 단기적으로 저를 잘 제공했습니다 (자주 리팩토링 중에 버그를 찾았습니다).

그냥 생각.

빌드/배포 패키지에 디버그 기호를 포함시킵니다.

VS 2008 Express에서 프로젝트 속성 (> Compile-> 고급 컴파일 옵션에서 발견했습니다.

이것은 매번 작동합니다. 스택 추적 메시지를 기판하면됩니다. 정말 쉬운! 또한 vb.net에서는 "모든 파일 표시"를 수행하고 PDB를 포함해야합니다.

'Err is the exception passed to this function

Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5)
Dim i As Integer = 0
While i < lineGrab.Length                   
    If (IsNumeric(lineGrab(i))) Then
        lineNo.Append(lineGrab(i))
    End If
    i += 1
End While

'LineNo holds the number as a string

C# 버전 :

string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5);

int i = 0;
int value;
while (i < lineGrab.Length)
{
    if (int.TryParse(lineGrab[i].ToString(), out value))
    {
        strLineNo.Append(lineGrab[i]);
    }
    i++;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top