2013-04-16 5 views
0

나는 다른 방법으로 로그 아웃하려고하는 VB6 응용 프로그램을 가지고 있습니다. 내가 가지고있는 것은 응용 프로그램이 디버그 모드로 설정되어 로그 아웃 할 것인지를 나타내는 레지스트리의 플래그 (기존)입니다.VB6 - 레지스트리를 통해 디버그 모드를 설정 하시겠습니까?

내 코드에는 이것이 사실인지 확인하는 if 문이 많이 있습니다. 이것은 진술이 사실인지 많은 처리 시간을 검사한다는 것을 의미합니다. 실제로는 그렇게 많이는 아니지만 그렇게 자주하는 것처럼 오버 헤드를 줄이고 싶습니다.

코드는 그래서 내가 찾는 것은이 할 수있는 더 나은 방법이있다이

If isDebug = True Then 
    LogMessage("Log what is happening") 
End If 

같은 문장이 가득합니다. Project Properties -> Make에서 디버그 모드를 설정할 수 있다는 것을 알고 있습니다. 그러나 이것은 .exe를 빌드하기 전에 설정해야하며 레지스트리 키를 통해 프로덕션 환경에서이를 설정할 수 있어야합니다.

+3

로깅 프로세스를 우리에게 몇 가지 코드를 보여줄 수 있다면

이것은 물론, 훨씬 쉽게 될 것이다 ('if')? 물론, 아무 것도 없습니다. –

+0

@IlyaKurnosov'Select ... Case'가 있습니다 – djv

+0

첫 번째 줄을'If isDebug Then'으로 바꿔서 더 간결하게 만들 수 있습니다. – djv

답변

3

디버그 모드를 설정하기 위해 명령 줄 인수를 사용해보십시오. 나는 이것을 해왔다.

Dim sCommandLine() As String 
sCommandLine = Split(Command$) 
For I = 0 To UBound(sCommandLine) 
    ' do something with each arg 
Next I 

또한 명령 줄 args를 IDE 내에 유지할 수 있으므로 디버깅 할 때 항상 사용할 수 있습니다. IDE 외부에서 실행할 때 컴파일 된 응용 프로그램에 인수가 포함 된 바로 가기를 만듭니다. 여전히

0

런타임 플래그가 설정된 경우 함수를 호출하려고합니다. 내가 볼 수있는 유일한 방법은 다음과 같습니다.

If isDebug Then 
    LogMessage("Log what is happening") 
End If 

그러나 어느 것이 성능 문제의 원인인지 의심 스럽습니다. 대부분의 로깅 프레임 워크는 이와 같은 코드를 홍보하고 플래그/로그 수준을 매개 변수로 함수에 추가합니다. 조건문 외부에서 로그 메시지를 불필요하게 계산하는 다른 장소가 없는지 확인하십시오.

로깅이 필요한 이유와 생성 된 로그가 그 목적에 효과적인지 평가할 수 있습니다.

VB 오류 처리를 사용하여 트랩 될 수있는 문제를 찾으려면 HuntERR31과 같은 오류 처리 라이브러리를 고려하십시오. 이제 디버깅 메시지 대신 오류 만 기록하도록 선택할 수 있습니다. 비록 라이브러리를 사용하지 않더라도, 문서는 VB에서 오류 처리에 대한 아주 좋은 설명을 가지고 있습니다.

1

많은 코드에서 염두에 두었던 것과 거의 동일한 것을합니다.

Sub LogDebug(ByVal strMsg As String) 
    If (isDebug) Then 
     LogMessage(strMsg) 
    End If 
End Sub 

그런 다음 당신의 메인 프로그램 본문에 LogDebug에게 전화를 걸거나 관계없이 디버그 플래그, 당신은 항상 로그인 싶은 게 있다면 직접 LogMessage를 호출이 추가.

나는 isDebug이 부울이라고 가정합니다. 함수 호출 인 경우 코드 시작 부분에서 설정 한 전역 플래그를 작성하고 레지스트리를 계속보고 대신 확인하십시오. 부울을 검사하는 것이 처리 부하의 상당 부분이라고 생각하지 않습니까?

0

또 다른 답 :

는 세션 기반의 일이되도록, 즉 닫을 때 (당신의 응용 프로그램에 레지스트리 플래그를 읽고 플래그가 다시 확인됩니다 응용 프로그램을 다시 시작 -와 레지스트리를 검사하는 이유가 없다 모든 단일 테스트).

그런 다음 (Tom의 게시물에 따라) 전역 변수에 값을 할당하고 그 값을 함수보다 훨씬 빠르게 테스트합니다.

로깅 속도를 높이려면 앱에서 문자열 버퍼 크기를 결정하고 특정 크기에 도달하면 로그 파일에 기록해보십시오. 분명히이 접근 방식에는 메모리의 변동성 문제가 있지만 디스크 액세스보다 성능이 필요한 경우 이러한 접근 방식을 권장합니다. 당신이 조건문을 피할 수있는 방법이 있다면 당신이 묻는 등

관련 문제