티스토리 뷰

출처 : http://blog.devgear.co.kr/imp/entry/IDE에서-Run으로-실행중인지-여부를-확인하려면


델파이나 C++빌더의 IDE 안에서 프로젝트를 Run으로 실행시킨 경우인지 여부를 코드에서 확인해야 할 경우가 있습니다. 물론, 컴파일된 모드가 디버그 모드인지 릴리즈 모드인지를 확인하기 위해서는 컴파일러 디렉티브 _DEBUG를 쓰면 되는데요.

디버그 모드로 컴파일되어있는지가 아니라 IDE 안에서 Run으로 실행된 경우, 즉 현재 디버깅 진행중인지를 알아내려면 전역변수 DebugHook의 값을 검사하면 됩니다. 이 DebugHook의 값이 0보다 크면 디버깅 중인 것입니다.

델파이라면...
procedure TForm1.Button1Click(Sender: TObject);
begin
  if DebugHook>0 then
    ShowMessage('디버깅 중입니다.');
end;

C++빌더라면...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if(DebugHook>0)
    ShowMessage("디버깅 중입니다.");
}

참고로 이 DebugHook 전역변수는 System.pas에 정의되어 있습니다. 델파이3와 C++빌더3 이상의 모든 버전에서 사용하실 수 있습니다.