2011-04-12 1 views
2

현재 데이터베이스 시간에 런타임 오류를 저장할 수있는 방법을 알아 내려고합니다. 내 비주얼 스튜디오 솔루션 탐색기의 프로젝트/솔루션/웹 사이트가 던질 가능성이 있습니다.Visual Studio 2008/2010에서 내 솔루션 프로젝트의 컴파일 타임과 런타임 오류를 catch하고 저장하는 방법

미리 도움을 주셔서 감사합니다.

업데이트 : 지금은 C# 언어의 오류 만 기록하고 싶습니다. 나는 필사적으로이를 구현하는 방법 또는 솔루션을 찾고

은 ... 어떤 도움 깊이

NIK ... 이해할 수있을 것이다.

+0

왜 지구상에서 컴파일 오류를 dbase에 저장 하시겠습니까? 대신 문제를 해결하십시오. –

+3

@ 한스 ... 나는 내가 오류를 고칠 수 있다고 생각한다. 나는 왜이 질문을 게시했는지 ppl이 왜 내 요구 사항에 따라 묻지 않는지를 묻기 위해이 오류를 기록했다. 질문에 당신이 그것에 대해 뭔가를 알고 있다고 생각하는 경우 ... 죄송합니다 조금 무례한 경우 ... 감사합니다 – NiK

답변

1

제 제안은 Jetbrain의 Resharper와 비슷한 Visual Studio의 확장 기능을 살펴 보는 것입니다. Visual Studio는 IDE 자체와 상호 작용할 수있는 풍부한 API를 제공합니다. Visual Studio 외부에서 명령 줄 빌드를 사용하는 경우 출력을 파일로 파이프하고 구문 분석해야 할 수 있습니다.

가 여기에 확장 개발에 시작할 수 있도록 몇 가지 링크의/인 추가 오류 목록을 통합하기위한 비디오에 대한 링크가있어 여기

http://msdn.microsoft.com/en-us/library/dd885119.aspx

http://msdn.microsoft.com/en-us/vstudio/bb968855

을 그리고 :

http://msdn.microsoft.com/en-us/vstudio/cc563922

런타임 오류가있을 수 있습니다. 당신이 처리 할 수있는 appdomain 예외 이벤트입니다. 처리기를이 이벤트에 연결하고 예외를 기록 할 수 있습니다. 처리 예외의

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

는 기술의 몇 가지가 있습니다. Microsoft는 사용할 수있는 예외 처리 블록이 있거나 응용 프로그램 전체에서 사용하는 사용자 지정 예외 형식을 만들 수 있습니다.

+0

고마워요 ... 여기에 당신의 100 평판 포인트를 가져 가세요 :) – NiK

5

컴파일 시간 오류가 html buildlog에 저장되면 출력 창에서 링크를 확인하십시오. 데이터베이스에 넣기에는 너무 어렵지 않아야합니다. 이 정보를 사용하는 소프트웨어는 CruiseControl.Net이므로 코드를보고 배울 수 있습니다.

런타임 오류의 경우 대답 할 수 없습니다. 우선, 당신이 무엇을 요구하고 있는지 불분명합니다. "런타임 오류"로, 예를 들어 제로로 나누는 예외를 의미합니까? 둘째, VS에서 지원되는 여러 언어 (예 : .NET 언어 및 곧은 C++) 간에는 매우 다릅니다.

업데이트 : .NET 플랫폼을 사용하고 있기 때문에 기본 기능을 모든 던진 오류를 포착하는 try/catch 블록으로 포장하고 해당 오류에서 가져올 수있는 모든 정보를 기록해 두는 것이 좋습니다. 데이터베이스 (예 : 스택 추적, 예외 종류, 아마도 미니 덤프). 물론, 잡히거나 삼키는 오류는 작동하지 않습니다. 예를 들어 리플렉션을 사용하는 등의 이유로 영리한 소스 변환을 수행해야합니다. 예를 들어 기본 클래스 Exception의 생성자에 로깅을 추가하는 것입니다.

+0

@ 엘 ... 나는 당신이 VS에서 다른 프로그래밍 언어를 다루는 경우에도 런타임 오류가 던져지면 뭔가라고 생각합니다. 빌드가 성공한 후에 애플리케이션/프로세스/프로젝트가 실행되는 동안. 예를 들어 int i = x/y 문을 가지고 있고 y는 외부 구성 요소에서 동적으로 전달 된 값입니다. 이제 외부 구성 요소가 'y'에 대해 null을 보내는 경우 응용 프로그램에서 런타임 오류라고하는 오류가 발생하고 개념/이론이 다른 언어에서도 동일하게 나타날 것이라고 생각합니다. – NiK

+0

개념/이론은 C++의 경우에는 구현이 완전히 다른 이야기라고 확신합니다. Visual Studio에서 예외를 완전히 끌 수 있다는 사실을 고려하십시오. 하지만 .NET 플랫폼을 사용하고 있기 때문에 이것은 학문적입니다. –

0

당신이 웹 사이트에서 원했던 소리입니다. 전역 클래스 (Global.asax.vb)를 만든 다음 Application_Error 이벤트에서 오류를 처리 할 수 ​​있습니다.당신이 어떤 처리되지 않은 예외를 처리하는 곳 (VB 예제는 내가 가진 무엇)이다

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
    ' Fires when an error occurs 
    Dim appException As System.Exception = Server.GetLastError() 
    Dim tempException As System.Exception = Nothing 

    If appException Is Nothing Then 
     Return 
    End If 

    tempException = appException.InnerException 

tempException는 처리되지 않은 예외를 개최하고 당신은 데이터베이스에 저장하거나, 다른 사람에게 이메일로 보낼 수 있습니다. 너의 선택.

응용 프로그램 이벤트에서 _unhandledException 이벤트를 처리하면 winform 응용 프로그램에서 매우 유사한 작업을 수행 할 수 있습니다.

0

Visual Studio 프로젝트 파일은 사용자 지정 컴파일 단계가 포함될 수있는 MSBuild 파일입니다. 어쩌면 컴파일 단계를 CSharp 컴파일러를 호출하고 오류를 기록하는 사용자 정의 단계로 대체 할 수 있습니다.

우리가 사용하고자하는 것에 대해 좀 더 많은 정보를 주시면 대체 솔루션을 제공 할 수 있습니다. 예를 들어 Visual Studio 내부에서 오류를 기록해야합니까, 아니면 외부 도구에서 이러한 오류를 기록하기에 충분합니까?

0

오직 C++ 컴파일러 만 빌드 로그를 수행합니다. C#은 그렇지 않습니다. 플러그인/확장 경로를 사용하거나 (시작하려면 Dave Ferguson의 제안을 사용하십시오) 명령 줄을 사용하여 (csc.exe)를 컴파일하고 출력을 파일 (csc.exe/options >> log.txt)를 찾아서 파싱합니다.

+0

오, 실행 시간은 ELMAH와 유사하거나 응용 프로그램 오류 이벤트에 연결되어 있습니다. – JaCraig

관련 문제