관리되지 않는 DLL을 모두로드하는 x64 (관리되지 않는) 응용 프로그램을 디버깅하는 데 WinDbg (기본 x64 - Itanium이 아님)를 사용하고 있습니다.WinDbg - 혼합 x64 관리 코드/비 관리 코드
관리되지 않는 DLL 중 하나에 중단 점을 설정하려고합니다. 중단 점에 도달하고 단계별로 안내하면 표시되는 지시 사항은 완전히 달라야합니다. 나는 단계별로 WinDbg이 올바른 디스 어셈블리를 표시하지 않는다는 것을 확인한 두 가지 디스어셈블러를 확인했다.
응용 프로그램에 부착
, 나는 라인과 같이 얻을 :ModLoad: 00000000`XXXXXXXX 00000000`YYYYYYYY C:\MyDLL.DLL
나는 기본 주소 XXXXXXXX을 반영하기 위해 두 디셈의 주소를 조정.
무엇이 문제 일 수 있습니까?
나는 (완전히 대답하지 않았다 적이있는)이 발견 : 이 어쩌면이 도움이 http://stackoverflow.com/questions/1398826/vs2008-on-win7-64-bit-debugging-a-windows-service? – devviedev
해체는 일반적으로 의미가 있습니까? 나는 정적 분석에 의존하는 것과는 반대로 이익을 갖는 라이브 프로세스에서 유효한 IP를 사용하여 디코딩하므로 windbg에 대한 일반적인 선호도를 부여합니다 (그러나 디스어셈블러가 좋을 수도 있음). 당신은 약간의 어셈블리 코드를 비교할 수 있습니까? – deemok
"call someFunc"vs "mov ebx, esp"입니다. 다른 지점에서 스테핑해도 일치하지 않습니다. 중단 점에 도달하면 일관성이없는 것처럼 보입니다. 나는 치지 만 중단되지 않는 중단 점을 설정합니다. – devviedev