2011-05-12 4 views
0

dbgeng.dll을 사용하여 하나의 시스템 전체 크래시 덤프를로드하는 응용 프로그램을 작성했습니다. WinDbg 명령 중 일부 (! vad)를 사용하고 싶습니다. exts.dll, ext.dll, kext.dll, kexts.dll과 같은 다른 DLL이 필요합니다. 나는이 dll을 가지고 있고 _NT_DEBUGGER_EXTENSION_PATH를 적절하게 설정해야한다. WinDbg GUI를 사용할 때 .chain 명령은 모든 DLL이로드되지만 내 코드에서이 DLL을로드하려고 시도하면로드 된 DLL을 볼 수 없습니다. 또한 Execute (.load ....)를 사용하여 이러한 dll을로드하려고하면 "LoadLibrary ('...') 호출에 실패했습니다. Win32 오류 0n193"오류가 발생합니다. 나는 시도했다!뿐만 아니라로드 - 둘 다 내 코드에서 작동하지 않았다. 그러나 모든 것이 GUI에서 완벽하게 작동합니다. 내 C++ 코드에서 이러한 DLL을 모두로드하는 방법을 알아낼 수 없습니다.dbgeng - 확장 DLL을 C++로로드 하시겠습니까?

누구든지 나를 도와 줄 수 있습니까? 정말 감사드립니다. 당신은 오류 193을받을 경우

-arb

답변

0

오류 193은 일반적으로 32 비트 응용 프로그램 (또는 그 반대)에서 64 비트 DLL을로드하는 것을 의미한다.

windbg가 설치된 디렉토리에서 dbgeng.dll을로드해야합니다. 그러면 모든 windbg 명령을 IDebugControl::Execute

+0

을 통해 사용할 수 있습니다. 감사합니다. 그 폴더에서 dll 로딩을 시행하려고하지만, 여전히 원하지 않는 시스템 폴더에서 로딩을 시도합니다. 내 코드에서 SetDllDirectory를 사용하면 .. dll은 여전히 ​​시스템 디렉토리에서로드됩니다 ... dll이 dll 디렉토리를 설정하기 전에로드되기 때문에이 솔루션이 있습니까? – arb

+0

LoadLibrary로 동적으로로드하고 GetProcAddress를 사용하여 DebugCreate를 가져옵니다. – John

+0

John, dbgeng.dll (64 비트)을 사용하여 Windows Server 2008 R2에서 32 비트 win7 크래시 덤프를 디버깅하려고합니다. 심볼 파일에 문제가 있습니다. 내가 할 때마다! vad - VMD에서 서버의 로컬 디렉토리로 ntdll.pdb 및 ntkrpamp.pdb를 복사했지만 심볼을 찾을 수 없으므로 VAD 트리를 읽을 수 없었습니다. . 문제가 무엇인지 아십니까? 나는 정말로 당신의 도움에 감사 할 것입니다. 감사 – arb

관련 문제