Я использую следующий код для создания файла minidump всякий раз, когда есть структурированное исключение, сгенерированное из моего кода:
void CreateMiniDump( EXCEPTION_POINTERS* pep ) 
{
  // Open the file 
typedef BOOL (*PDUMPFN)( 
  HANDLE hProcess, 
  DWORD ProcessId, 
  HANDLE hFile, 
  MINIDUMP_TYPE DumpType, 
  PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, 
  PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, 
  PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
    HANDLE hFile = CreateFile( _T("C:/temp/MiniDump.dmp"), GENERIC_READ | GENERIC_WRITE, 
    0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); 
    HMODULE h = ::LoadLibrary(L"DbgHelp.dll");
    PDUMPFN pFn = (PDUMPFN)GetProcAddress(h, "MiniDumpWriteDump");
  if( ( hFile != NULL ) && ( hFile != INVALID_HANDLE_VALUE ) ) 
  {
    // Create the minidump 
    MINIDUMP_EXCEPTION_INFORMATION mdei; 
    mdei.ThreadId           = GetCurrentThreadId(); 
    mdei.ExceptionPointers  = pep; 
    mdei.ClientPointers     = TRUE; 
    MINIDUMP_TYPE mdt       = MiniDumpNormal; 
    BOOL rv = (*pFn)( GetCurrentProcess(), GetCurrentProcessId(), 
      hFile, mdt, (pep != 0) ? &mdei : 0, 0, 0 ); 
    // Close the file 
    CloseHandle( hFile ); 
  }
}
LONG WINAPI MyUnhandledExceptionFilter(
 struct _EXCEPTION_POINTERS *ExceptionInfo
)
 {
     CreateMiniDump(ExceptionInfo);
     return EXCEPTION_EXECUTE_HANDLER;
 }
И я делаю SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); из главной точки входа в приложение (я не настраиваю его для каждого потока, хотя). После этого, чтобы протестировать этот код, я сделал следующее для генерации нарушения доступа: int* p = 0; *p = 0; Файл дампа был сгенерирован. Затем я использовал windbg и открыл файл дампа и использовал команду .ecxr, чтобы получить запись об исключении. Однако никакой информации не поступает (т.е. Я не получаю стек вызовов). Также, если я использую команду !analyze -v, тогда она может показать строку, где произошел сбой. Кто-нибудь знает, что мне не хватает, и как это решить?
Кстати, я использую VC7-компилятор с флагом /EHa (asynchronuos exception model).