2009-10-23 3 views
3

App1.exe에 의해 시작되는 App2.exe를 디버깅하고 싶습니다. App2.exe가 dll 인 경우 호스트 응용 프로그램을 지정할 수 있지만 .exe에서는 작동하지 않습니다.델파이에서 다른 .exe로 시작한 .exe를 디버깅하는 방법

이제 'attach to process'를 사용하지만, 그렇게하기 전에 App2.exe가 충돌하면 쓸모가 없습니다.

수동으로 프로세스에 연결해야 할 때이 작업을 수행 할 수있는 방법이 있습니까?

답변

2

아니요, 제대로 첨부 할 수있는 방법이있을 수 있습니다. 충돌 지점 직전에 App2에서 발생하는 것을 발견하고 그 시점에서 모달 대화 상자를 팝업하십시오. 그런 다음 디버거를 부착 할 시간이 주어지기 전까지는 계속 진행되지 않습니다.

+3

또는 DebugHook이 0이 아닌 다른 값이 될 때까지 기다릴 수 있습니다. 'DebugHook = 0 do Sleep (1000);' – idursun

1

직접 app2.exe를 실행하고 필요한 명령 줄 매개 변수를 전달할 수 있습니다.

+0

그럴 수는 있지만 두 프로세스가 서로 통신한다는 사실을 잊어 버렸습니다. 그들의. 어쨌든 고마워. – Giel

0

모두 애플 리케이션은 당신입니다 당신은 나는 다음과 같은 제안보다 코드가있는 경우 :

  1. 은 모두 애플 리케이션을위한 디버그 모드를 확인합니다. 외부 inc 파일을 사용하십시오. 예 :
  2. 두 개의 IDE를 시작하고 각 응용 프로그램을 자체 IDE에로드하십시오. 바로 지금 애플 리케이션

나는 서버가 여러 EXE 노동자로 급부상 프로젝트가 사이의 내부 통신을 디버깅 할 수 있습니다 할 경우 디버그 모드

  • 에 빌드는 해당 호스트 각각 자신의 DLL 모듈을 처리합니다. 나는 어느 dll이로드 될지를 지정할 수있는 디버그 모드를 가지고 있으며, IDE들 사이에서 두 프로세스를 모두 실행하고 통신 할 수 있습니다. 지금까지 내가 찾은 최고의 방법입니다.

  • +0

    두 가지 IDE는 무엇입니까? Delphi 4는 여러 프로세스를 동시에 디버깅 할 수있는 기능을 도입 한 것이 확실합니다. –

    +0

    아, 그걸 몰랐어 :) 정보 주셔서 감사. 나는 지금 어리 석다. :) – Runner

    5

    "디버그 생성 프로세스"디버깅 옵션을 설정하십시오. 기본적으로 해제되어 있습니다. App1이 새 프로세스를 시작하면 디버거가 일시 중지됩니다. 디버거가 새 프로세스에 자동으로 연결되어 있지 않으면이 프로세스에 연결 한 다음 실행을 다시 시작하십시오.

    +0

    이것은 멋진 옵션이다; 조금 숨겨져 있습니다 : 도구 -> 옵션 -> 디버거 옵션 -> CodeGear 디버거 -> 일반 -> 생성 된 프로세스 디버그 아래에 있습니다. –

    +0

    하지만이 방법으로 소스를 디버깅 할 수 없다고 가정합니까? 아마 CPU보기 만? – Runner

    +0

    사용할 수있는 소스가있는 경우 디버깅 할 수 있습니다.두 프로젝트가 모두 IDE에로드 된 경우 도움이 될 수 있습니다. –

    1

    창을 사용하는 경우에는 창을 지원합니다. 기본적으로 특정 프로세스가 시작될 때마다 Windows 로더가 다른 프로세스를 시작하도록 지정할 수 있습니다. 예를 들어, notepad.exe를 클릭 할 때마다 항상 winword.exe를 실행하도록 Windows에 지시 할 수 있습니다.

    이 기능을 사용하면 프로세스를 시작할 때마다 자동으로 디버거를 시작할 수 있습니다 (이 기능이 처음 도입 된 이유입니다). 그러나 디버거 만 실행하도록 제한되지는 않습니다.)

    정확하게 수행하는 방법은 here입니다. Windows 패키지 용 디버깅 도구를 다운로드하고 GFlags를 사용하여 직접 수행 할 수도 있습니다.

    관련 문제