2

내 친구는 내가 항상 사용하는 정말 유용한 클래스 라이브러리를 만들었습니다. 나는 보통 반사경을 사용하여 그의 코드가 무엇을 참조하십시오.pdb 파일을 사용하여 타사 어셈블리를 단계별로 진행할 수 있습니까?

디버그 중 내가 실제로하고 싶었던 코드는 에서까지였습니다. 그래서 그는 나에게 그의 .pdb 파일을 주었다.

  • foo.dll를 (릴리스 구성, 컴파일)
  • Foo.pdb 이제

, 나는 예외를 throw 할 때 나는 그의 코드에 자동으로 브레이크에 그것을 얻을 수있는 방법을 잘 모르겠어요 (자신의 코드, 다양한 지점에서 예외) .. A first chance exception of type 'System.Web.HttpException' occurred in Foo.dll ...

Visual Studio에서 심볼 서버 설정으로 무언가를 설정해야합니까? 컴파일 된 dll을 가져와야합니까? 디버그 구성 및 .dll 및 .pdb 파일을 전달할 수 있습니까? 아니면 (그리고 나는 lly 두려워하다.) .dll, .pdb 및 그의 소스 코드가 모두 필요합니다.

나는 또한 look at this previous SO question을 가졌지 만 그것은별로 도움이되지 않았습니다. 질문하기 전에 검색하려고했습니다.)

누군가 나를 도와 줄 수 있습니까?

답변

2

예, 친구가 PDB의 색인을 생성하면 디버거가 소스 제어 시스템에서 적절한 소스를 찾을 수있는 위치를 알 수 있고 친구가 해당 pdb를 심볼 서버에 업로드하면 완벽하게 단계를 밟을 수 있습니다 디버깅하는 동안 코드를 통해.

직장에서 일부 프로젝트에 대해이 작업을 수행했으며 이는 매력처럼 작동합니다.

더 많은 기호 서버 설정에 대한 정보 : 아마도 그것은 눈부시게 명확하지 비록,

Source server helps you kill bugs

Setting up a symbol server

Using symstore

+0

참조 프로젝트가 타사가 아니지만 소스 코드를 가지고 있지만 디버깅 할 곳의 다른 프로젝트에있는 DLL을 추가 한 자체 프로젝트 인 경우 심볼 서버를 설치해야합니다. – dakait

+0

아니요, 빌드 한 경우 아니오 그 프로젝트에서 참조한 프로젝트, 그리고 pdb 파일이 있다면. 그냥 참조 된 DLL 옆에 pdb 파일을 복사하고, 당신은 좋은거야. –

+0

답장을 위해 tnx : – dakait

0

다른 질문에 대한 링크가 게시 된 것 같습니다. 귀하의 질문에 대한 대답이 질문에 포함되어 있기 때문에 검색 한 것으로 증명되었습니다.

1

대답은 링크 된 질문에서입니다, 그래서 말하자면 : 예, 소스 코드를 단계별로 실행하려면 소스 코드가 있어야합니다. PDB 파일은 특정 기계 명령어에 해당하는 소스 파일의 라인을 디버거에만 알려줍니다.

"기호 서버"또는 이와 유사한 것을 설정할 필요가 없습니다. 그냥 소스를 보내달라고하십시오. PDB 파일을로드 할 때 Visual Studio는 같은 경로에 있지 않으면 원본 파일의 위치를 ​​묻는 메시지를 표시합니다.

+0

사실, 그 사람이 정기적으로 소스 코드를 변경하면, 그는 topicstarter에 DLL의 새 버전을 제공 할 때마다 해당 소스 코드를 보내야합니다. 그리고 topicstarter 다른 프로젝트에서 해당 DLL의 다른 버전을 사용하는 경우 debuggign 올바른 소스를 사용하여 꽤 어려울 수 있습니다 ... –

+0

그럼 소스를 필요로하는 경우 PDB의 사용은 무엇입니까? 내 말은, 왜 그가 나에게 근원을주지 않는가, 내가 그것을 컴파일하고 참조하는 것일까? 나는 그것을 얻지 못한다. (BTW, 나는 그의 소스를 원한다. 그러나 pdb가 거기에있을 것을 희망한다.) –

+0

PDB의 "요점"은 정확히 내가 말한 것이다. 비록 당신이 컴파일하더라도 디버거가 작동하는 방법은 PDB 파일을 생성하는 컴파일러를 얻으려는 소스 코드 자체입니다. 더 중요한 것은 여러분이 필요로하는 소스를 모두 보낼 필요가 없다는 것입니다 어셈블리를 컴파일하려면 소스 코드 파일을 실행하면됩니다. – EMP

관련 문제