2014-01-18 6 views
1

HTTP 서버를 실행하는 Linux 컴퓨터에서 WinDbg 및 친구들과 함께 사용할 심볼 서버를 어떻게 설정할 수 있습니까?Linux의 PDB 심볼 서버

업스트림 심볼 서버 provided by Microsoft are HTTP servers (예 : http://msdl.microsoft.com/download/symbols)과 그 동작을 모방하고 일반적인 Win32 디버거가 내 자신의 심볼을 다운로드 할 수있게하고 싶습니다.

와인이나 KVM을 통해 Windows를 에뮬레이트하지 않고 어떻게 구현할 수 있습니까?

+0

당신이 symstore.exe''사용하여 기호 서버에서 기호 파일을 저장할 수 있습니다 또는 귀하의 기호 서버가 다운로드 접근 될 수있는 것으로 확인 될 것이라고 그것이 중요한가 만? –

+0

@ThomasW : 다운로드 전용 액세스가 좋으며'symstore.exe' 기능이 필요하지 않습니다. – 0xC0000022L

답변

4

파이썬 symstore 패키지를 사용하여 PDB (및 exe/dll) 파일을 로컬 symstore 디렉토리에 게시 한 다음 웹 서버와 함께이 디렉토리를 제공하면됩니다.

  • 구성 디렉토리의 서버 콘테스트에 웹 서버의/var/www /에서 문자
  • 은 'symstore'파이썬에게 패키지를 설치 말할

새로운 PDB를 게시 할 때마다/exe/dll 파일, 어딘가에 넣어 웹 서버. 그런 다음 파이썬 패키지에서 제공하는 'symstore'명령을 실행하십시오. 이것은의/var/www /에서 심볼의 서브 디렉토리를 수정하고의 메타 파일의 트랜잭션 항목을 만들려면 모든 지정된 파일을 복사합니다

symstore의/var/www /에서 문자 pdb1의 pdb2 ... 기호 저장소.

symstore 패키지도 파이썬 API를 제공하므로 모든 파이썬 프로세스에서 프로그래밍 방식으로 게시 할 수 있습니다.

Symstore 패키지 설치 지침 현재 위치 : https://pypi.python.org/pypi/symstore/0.1.1

5

아직 리눅스를 만들려면 호환 가능한 파일 구조를 만들어야하기 때문에 how to create a symbol store on Windows을 작성해야 할 수도 있습니다.

먼저 http를 통해 심볼 서버를 공유하는 것이 전혀 중요하지 않습니다. 심볼 저장소가 만들어지면 http를 통해 액세스 할 수있는 어딘가에있는 것입니다. 그래서, 정말 중요한 것은 symstore.exe이하는 일입니다.

난 당신이 에뮬레이션을 사용하는 아이디어를 즐겁게하지 않으려는 알아,하지만 당신은 정말이 개 선택할 수 있습니다

  1. 직접 와인 같은 것을 사용하여 리눅스 박스에 symstore.exe을 실행합니다. (나는 KVM이 얼마나 효과가 있을지 모르겠다.)
  2. 사용할 필요가있는 symstore.exe의 기능을 다시 만든다.

다시 작성 symstore.exe은 거래, 파일 링크 또는 여러 사용자가 가져올 수있는 고급 기능을 사용하고 싶지 않은 경우 매우 간단 할 수 있습니다.


무엇 symstore.exe의 단순화 된보기가 수행합니다

  1. 수입 각 pdb의 이름으로 출력 하위 디렉토리에 서브 디렉토리를 작성합니다.
  2. pdb 파일을 해시하고 해시 이름이있는 하위 폴더를 만듭니다.
  3. pdb을 해시 디렉토리에 복사하고 선택적으로 압축합니다. 또는 플래그에 따라 pdb이 가져 오는 위치 인 file.ptr 파일을 저장합니다.
  4. 해시 디렉토리의 refs.ptr에 가져온 PDB에 대한 정보가있는 행을 추가합니다. (나는이 파일이 실제로 클라이언트에 의해 사용 된 것으로 믿지 않는다.이 단계는 생략 될 수 있으므로 dgbhelp.dll이라고 생각한다.)
  5. [output directory]\000Admin에있는 파일을 업데이트하여 트랜잭션과 같은 것을 지원한다. (다시 말하지만, 이것은 앞으로의 symstore.exe 실행을위한 것입니다.)
  6. 출력 폴더에있는 pingme.txt의 터치.

(상세 정보 here.)

이 너무 복잡 소리가 나지 않는다, 그러나 의심의 여지가, 그것을 제대로하는 데 시간이 걸릴 수 있습니다. 우선, Mozilla's build script을보고 싶은데, 이는 Windows 디버거가 읽는 방법을 알고있는 구조에 pdb을 배치합니다. 그리고 그것에 대한 좀 더 자세한 정보는 here입니다.

1

업데이트 : more detailed answer of mine을 참조하십시오.


당신이 모든 기호의 관리자 가정을 감안할 때, 다음과 같이 할 수 있습니다

  1. symstore.exe를 사용하여 컴퓨터의 "마스터"기호 저장소를 만듭니다.
  2. 새 가상 호스트를 만들거나 기존 도메인을 사용하고 심볼 저장을위한 하위 디렉토리를 만듭니다.
  3. 는 새로운 기호를 추가 다시 Windows 시스템 symstore.exe을 실행하려면 디렉토리

에 대한 전체 마스터 기호 저장소를 업로드합니다. 그런 다음 모든 파일을 다시 업로드하십시오. pingme.txt을 제외한 서버에 이미 존재하는 것을 건너 뛸 수 있습니다. 기존 파일은 변경해서는 안됩니다. 그렇지 않으면 해시가 서로 달라야하며 이는 다른 하위 디렉토리에 있음을 의미합니다.

액세스로부터 심볼을 보호하고자 할 수 있습니다. WinDbg는 최소한 기본 인증의 경우 .htaccess.htpasswd을 지원합니다. 네가 그걸 잘 알고있는 것 같아.

+0

흥미로운 아이디어. 파일에 상대 경로가 포함되어 있습니까? – 0xC0000022L

+0

상대 경로가 포함 된 파일은 무엇입니까? 나는 단순히 Filezilla를 사용하고, 모든 하위 폴더를 포함한'c : \ productsymbols' 파일을'ftp : // symbols.example.com /'에 업로드하고 symbols.example.com은 HTTP를 통해 접근 할 수 있습니다. –