2009-12-11 7 views
0

VS.NET을 사용하여 프로세스에 연결하면 프로세스에 많은 DLL이로드되어 DLL 중 하나를 빌드하고 내 DLL에 중단 점을 설정하려고합니다. "New Breakpoint"를 클릭하고 함수 이름 Func_A를 입력하고 "Intellisense를 사용하여 확인"상자를 체크합니다. 그런 다음 확인을 클릭하지만 VS.net이 함수를 찾을 수 없다는 불만을 표시합니다.VS.NET을 사용하여 응용 프로그램 디버그

프로세스가 연결될 때 VS.NET의 출력을 검사 할 때 DLL 행 뒤에 "심볼을로드 할 수 없습니다"라는 메시지가 없어서 내 PDB 파일을 성공적으로 찾은 것으로 생각됩니다. 왜 내가 중단 점을 설정할 수 없는지 모르겠다.

내 프로젝트는 C#으로 관리되는 프로젝트입니다. 모든 DLL에 대해 일부 디버그 정보가 있지만 일부는 그렇지 않지만 VS.Net에서 디버그 정보를 확인했다고 생각합니다.

시도 할 수있는 다른 방법을 제안하십시오 ...

또 다른 질문은 어셈블리 DLL 파일에 중단 점을 설정할 수있는 기능을 볼 수있는 도구가?

답변

1

는 DLL이 많은 당신이 기본 모드에서 디버거를 실행하는 것으로 보인다 다음로드. Tools + Attach to Process 대화 상자의 옵션이며 반드시 Managed를 선택하십시오.

이런 문제를 피하는 가장 쉬운 방법은 소스 코드 파일을로드하고 편집기 창의 왼쪽 레일을 클릭하여 중단 점을 설정하는 것입니다. 또한 Attach to Process를 사용하지 마십시오. Project + Properties, Debug 탭을 사용하여 "Start external program"을 선택하고 어셈블리를로드하는 .exe를 선택하십시오. 이제 F5를 눌러 디버깅을 시작할 수 있습니다. Express Edition에서는이 옵션을 사용할 수 없습니다.

1

실제로 더 많은 세부 사항이 있습니다. 그러나 여기에 ...

DLL 소스가 있습니까? 그렇다면 코드를 열고 원하는 곳마다 중단 점을 추가하십시오.

그렇지 않으면 Intellisense에 의존하고 있습니다. Intellisense는 항상 신뢰할 수있는 것은 아닙니다. 특히 관리되는 C++ 어셈블리가 관련되어있는 경우 특히 그렇습니다. 도움을 받으려면 Reflector을 사용하여 DLL을 살펴보고 전체 네임 스페이스로 된 함수 이름을 가져 와서 Intellisense를 무시하고 시도해보십시오.

리플렉터를 사용하면 DLL이 난독 화되었는지 (제 3자인 경우) 볼 수 있습니다.

희망 사항은이 문제를 해결하는 방법에 대한 새로운 아이디어를 제공합니다. 당신이 볼 경우

K

관련 문제