인터넷 서버 확장 DLL을 작성 하는 경우 디버거에서 실행 하는 확장 호출 후 실행, 중단점 설정된 또는 모니터 변수 값 추적할 수 있도록 그것을 얻는 데 관심이 있을 수도 있습니다. Microsoft 인터넷 정보 서버 (IIS) 일어나 고 디버거에서 DLL 실행 조금 까다롭습니다. 먼저 조용한 서버 제어 설정에서 DLL을 디버깅할 수 있습니다 찾이 필요가 있을 것 이다. 이러한 리소스를 발견 했습니다 일단 DLL 디버깅 것을 시작할 수 있습니다.
때문에 버전 3.0 및 4.0 IIS의 차이, 그것은 DLL을 디버깅 하려면 사용 하는 어떤 버전을 알고 하는 것이 중요。
인터넷 서버 확장 IIS 3.0을 사용 하 여 DLL을 디버깅 하려면 다음이 단계를 수행 합니다.:
-e W3Svc
디버깅 팁
IIS는 대화형 응용 프로그램으로 실행할 수 있습니다 훨씬 쉽게 디버깅. 이렇게 하려면 시스템에 대 한 몇 가지 변경을 해야 합니다. 서버에서 실행 하려고 하는 사용자 계정에 대 한 몇 가지 권한을 추가 해야。
권한을 추가 하려면 사용자 관리자를 실행 합니다. (Windows NT 3.51을 사용 하는 경우 실행 MUSRMGR.EXE입니다. Windows NT 4.0을 사용 하는 경우 USRMGR 실행 합니다.EXE입니다.) 정책 메뉴에서 사용자 권한 을 클릭 합니다. 고급 사용자 권한 표시 확인란을 선택 합니다. 그런 다음 오른쪽의 드롭다운 목록에서 운영 체제의 일부로 활동 을 선택 하 고 사용자 계정 추가。
(또한 오른쪽에 드롭 다운 목록)에 있는 보안 감사 생성 이 프로세스를 반복 합니다. 모든 인터넷 서비스 (WWW, ftp 및 gopher) 중지 되었는지 확인 하 고 INETINFO.EXE 실행 되지 않는 (TLIST를 사용 하 여 체크). 로그 오프 하 고 다시 로그온 합니다. 그런 다음 명령줄에서 IIS를 로드할 수 있습니다.:
INetInfo.Exe-e W3Svc
IIS에서 (예를 들어, WinDbg)에서 디버거를 로드 하려면 다음 명령줄을 사용 하 여:
WinDbg INetInfo.Exe-e W3Svc
갈 준비가 되었습니다. Visual c + +에서 빌드 메뉴에서 디버그 를 가리킨 및 다음 이동을 클릭 합니다. WWW 게시 서비스를 시작 하는이 작업 하 고 디버거는 DLL의 기호를 인식 하 고 있을 것입니다. 파일 정보를 디버깅 하지 않습니다 경고를 무시할 수 있습니다.
Visual c + +를 닫을 때 INETINFO에 대 한 작업 영역을 저장 합니다.EXE입니다. 그런 식으로 디버깅 세션에 대 한 설정을 피할 수 있습니다. 그냥 INETINFO를 엽니다.디버거를 다시 시작할 준비가 되 면 데이터 시트 작업 영역 파일。
캐시 된 Dll
HKEY_LOCAL_MACHINE/시스템/CurrentControlSet/Services/W3SVC/매개 변수/CacheExtensions 때마다 사용 되는 Dll을 다시 초기화 하는 서버에서 레지스트리 설정을 조정할 수 있습니다. 이 설정이 1 이면 서버는 가능한 한 오랫동안 메모리에 로드 된 Dll 유지 됩니다. 이것은 서버에 대 한 기본 설정은 이후 최대 성능을 제공 하는 서버를 통해 서버를 사용 하 여 디버깅 하는 경우에 변경 해야 합니다. 만약 당신이 설정이 0, 서버는 항상 로드 확장 Dll 사용 하는 때마다。
DLL을 다시 로드 하도록 서버를 강제로 DLL을 충돌 하거나 인스턴스별 데이터 유지를 화나게 수 있습니다 때 유용 합니다. DLL을 다시 초기화 하려면 서버 강제로, 작은 노력으로 예측 가능한 상태로 DLL을 다시 얻을 수 있습니다. 그러나 정상적인 CacheExtensions 설정을 사용 하 여 DLL, 있는지 DLL의 코드 않습니다 완전히 그 초기 상태에 의존을 테스트 해야 합니다.
여러 가지 방법으로 IIS 4.0 이상을 사용 하 여 서버 구성 요소와 인터넷 서버 확장 Dll 디버깅 하기 위한 환경을 설정할 수 있습니다. Windows NT 프로세스에 연결할 수 있는 디버거를 사용 하는 구성 요소 또는 확장을 디버깅 하려면이 기능을 사용할 수 있습니다. 예를 들어, Visual c + + 디버깅 하는 경우 다음 단계를 수행:
적절 한 디버깅 환경을 설정 하려면 다음 단계를 수행 하는 디버거를 사용 하는 Windows NT 프로세스에 연결할 수 없는 경우:
디버거 lt; = DebuggerExeName > Debuggerexename는 디버거 전체 경로 사용 하는。
World Wide Web 게시 서비스가 시작 될 때 디버거를 시작할 수 있습니다. 이제 인터넷 서버 확장 DLL에에서 적절 한 중단점을 설정할 수 있습니다.
구성 요소를 메모리에 로드 될 때까지 구성 요소의 소스 코드에 중단점을 설정할 수 없습니다. 이렇게 하려면 Internet Explorer 및 보기를 시작 합니다.개체가 포함 된 ASP 페이지입니다. 페이지가 로드 되 자 마자 귀하의 구성 요소에 중단점을 설정할 수 있어야 합니다. 다시 페이지를 보려면 새로 고침 을 클릭 하 고 선택한 중단점을 트리거. 경우 (예를 들어, 오류가 발생 하는 경우 구성 요소 시작 코드에) 구성 요소를 한 번도 로드할 수 없습니다, 디버깅 세션을 시작 하기 전에 구성 요소 DLL을 로드 해야 합니다. (아래 11 단계 참조).
경우에 따라 위에서 설명한 두 절차 중 하나를 사용 하지 못할 수 있습니다. 이러한 전략 중 하나를 사용 하 여 문제가 있는 경우 iis 이전 릴리스에서 설명한 세 번째 접근 방식이입니다. 이 세 번째 방법을 Windows NT 보안 권한을 설정으로 레지스트리를 변경 해야 합니다. 그것은 또한 서비스로 IIS를 실행 하는 기능을 억제할 것 이다. 이 방법은 이전의 두 가지 전략 실패 하는 경우에 사용 해야。
{61738644-F196-11D0-9953-00C04FD919C1} / / WAMREG IIS admin 서비스
{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752} / / IIS Admin Crypto 확장
{A9E69610-B80D-11D0-B9B9-00A0C922E750} / / IISADMIN 서비스
LocalService 키워드는 Appid의 추가 하위 키에서 찾을 수 있습니다.
C:\WINNT\System32\Inetsrv\Inetinfo.exe
-e w3svc
메모nbsp;??디버깅 세션을 완료 한 후 이전 설정을 복원 하 고 IIS가 서비스로 실행 되도록 허용 하려면 1 통해 5 단계를 반전 해야 합니다(&N).
기술 노트 번호로 |nbsp; 카테고리별 기술 노트(&N)