Visual C#을 사용하여 대형 C# 프로젝트를 디버깅하고 있습니다. 이 프로젝트는 매우 커서 일부 pdbs 만 직접 빌드됩니다. 모든 pdb를 만들 수 있지만 시간이 많이 걸립니다. 백 트레이스를 디버깅하고 있지만 트레이스의 일부는 [외부 코드]로 표시되어 있습니다. 일부 pdb가 누락되었음을 알고 있지만, 외부 코드가 상주하는 DLL을 어떻게 알 수 있습니까? C에서 나는 EIP가 어디서 EIP가 살고 있는지를 결정하기 위해 프로세스 맵핑을 볼 수있다. 그러나 이것이 닷넷 환경에서 어떻게 이루어질 수 있는가?Visual C# 백 트레이스 : [외부 코드]가있는 위치를 확인하는 방법?
10
A
답변
23
도구로 이동 | 옵션 | 디버깅 | 일반 및 의 "내 코드 만 사용"확인란의 선택을 취소하십시오. 이제 Visual Studio에서 전체 호출 스택을 표시합니다 (적어도 관리 코드의 경우 "기본에서 관리되는 전환"까지 볼 수 있음).
1
그래서 프로젝트가 정말 크다면 모든 클래스가 네임 스페이스에 잘 공유되어 있고 모든 어셈블리의 이름이 네임 스페이스의 이름을 따서 명명된다는 것보다 훨씬 낫습니다. 따라서 외부 코드가 시작되는 곳 (또는 끝나는 곳)을 살펴보면 호출이 어디에서 발생했는지 (또는 끝까지) 찾아야하며 누락 된 어셈블리 pdb를 결정해야합니다. 가 \t [관리 전환 네이티브]를 \t \t이 \t [기본 전환에 관리] 그러나 전환이 간다 어디 얻을 수 있습니다 :
관련 문제
- 1. 백 트레이스 by SIGSEGV
- 2. C#의 패킷 마킹 (IP 트레이스 백)
- 3. 계산 된 계수의 백 트레이스 추적
- 4. 이상한 백 트레이스 - 어디에서 오류가 있습니까?
- 5. gdb 자동화 : 10ms마다 백 트레이스 표시
- 6. C++ : 외부 프로그램이 실행 중인지 확인하는 방법?
- 7. 외부 리소스를 확인하는 방법
- 8. ItemTemplate의 서수 위치를 확인하는 방법
- 9. gdb 자동화 : 함수를 호출 할 때마다 백 트레이스 표시
- 10. 이 메모리 누수가 발생한 위치를 확인하는 방법?
- 11. IsolatedStorageFile 루트 디렉터리의 위치를 확인하는 방법
- 12. iPhone에서 GPS로 현재 위치를 확인하는 방법
- 13. gps를 사용하는 위치를 확인하는 방법. Android
- 14. glibc가 사용되는지 확인하는 방법
- 15. Visual Studio 2010에서 런타임시 현재 줄의 위치를 확인하는 방법은 무엇입니까?
- 16. min()/max() 호출 코드가있는 이상한 C++ 오류
- 17. 외부 php 파일에서 사용자가 인증되었는지 확인하는 방법
- 18. C# HTTPS를 확인하는 방법
- 19. 부분 포스트 백 페이지 후에 UpdatePanel에서 포커스 위치를 유지하는 방법
- 20. Visual Studio 2010에서 비 관리 코드가있는 DLL 사용?
- 21. GLSL - Visual C++에서 외부 확인되지 않음
- 22. Visual C++ 2003에서 외부 실행 파일에 연결
- 23. 스택 트레이스 창 다시 표시
- 24. Windows .bat 스크립트에서 32bit Program Files 폴더의 위치를 확인하는 방법
- 25. PostgreSQL - 내 데이터에 백 슬래시가 있는지 확인하는 방법
- 26. Visual Studio에서 외부 javascript 파일을 사용하는 방법
- 27. Visual Studio 프로젝트 항목이 WebReference인지 확인하는 방법?
- 28. C# 양식의 상태를 확인하는 방법
- 29. C# WebClient.OpenRead eof를 확인하는 방법?
- 30. C# - 속성이 변경되었는지 확인하는 방법
네 오, 그것은 보여줍니다? –
관리되지 않는 코드에 대한 기호 (PDB)가 없으면 가능하지 않다고 생각합니다. 관리되는 어셈블리에는 메타 데이터가 포함되어 있기 때문에 VS는 스택 추적의 관리되는 부분에 대해이를 수행 할 수 있지만 관리되지 않는 코드에는 동일한 메타 데이터가 없으므로 VS가 메서드 호출을 다시 구성 할 수 없습니다. 그러나 모듈 창이나 "소스를 사용할 수없는 경우 디스 어셈블리 표시"옵션을 사용하여 비트를 약간 고정시킬 수는 있습니다. 그러나이 작업을 수행 한 경험이 없습니다. 미안합니다. – itowlson
감사합니다. 전에 리눅스에서했던 일은 EIP (0x800453c)를 얻은 다음 동적 DLL 맵의 맵을 얻은 다음 EIP가 빠지는 DLL을 얻을 수 있습니다. 그것은 Visual C#에서 할 수 있습니까? –