• XSS.stack #1 – первый литературный журнал от юзеров форума

Как обрабатывать ошибки при работе без CRT C++ ?

Alexey18

(L3) cache
Пользователь
Регистрация
11.06.2023
Сообщения
163
Реакции
30
Доброго времени суток. Друзья, в общем возник вопрос по обработке ошибок без CRT. Много информации нарыл в интернете, нормального способа не нашёл.
Предлагается _try _except , и ручная реализация/определение CRTшных функций. Вот блин, нейронка даже не помогает . Подскажите плиз может кто-то как это сделать. Буду очень благодарен.
 
Если Windows, то SEH, VEH или
C:
LONG DbgPrint(PEXCEPTION_POINTERS pExcept)
{
  PEXCEPTION_RECORD ExceptionRecord = pExcept->ExceptionRecord;
  char* szMsg = (char*) malloc(1024);
  sprintf(szMsg,"address: 0x%08x\ncode:   0x%08x\n",ExceptionRecord->ExceptionAddress,
             p_excep_record->ExceptionCode);
  LPVOID lpMsgBuf;
  FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER \
                        | FORMAT_MESSAGE_FROM_SYSTEM \
                        | FORMAT_MESSAGE_IGNORE_INSERTS,
                        NULL,p_excep_record->ExceptionCode,
                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                        (LPTSTR) &lpMsgBuf,0,NULL);
  strcat(szMsg,(LPCSTR)lpMsgBuf);
  LocalFree(lpMsgBuf);
  printf("%s/n",szMsg);
  free(szMsg);
  return EXCEPTION_EXECUTE_HANDLER;
}

__try
{
     //EXCEPT!!! 
    return STATUS_SUCCESS;
} __except (DebugPrint(_exception_info()))
 
Если Windows, то SEH, VEH или
C:
LONG DbgPrint(PEXCEPTION_POINTERS pExcept)
{
  PEXCEPTION_RECORD ExceptionRecord = pExcept->ExceptionRecord;
  char* szMsg = (char*) malloc(1024);
  sprintf(szMsg,"address: 0x%08x\ncode:   0x%08x\n",ExceptionRecord->ExceptionAddress,
             p_excep_record->ExceptionCode);
  LPVOID lpMsgBuf;
  FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER \
                        | FORMAT_MESSAGE_FROM_SYSTEM \
                        | FORMAT_MESSAGE_IGNORE_INSERTS,
                        NULL,p_excep_record->ExceptionCode,
                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                        (LPTSTR) &lpMsgBuf,0,NULL);
  strcat(szMsg,(LPCSTR)lpMsgBuf);
  LocalFree(lpMsgBuf);
  printf("%s/n",szMsg);
  free(szMsg);
  return EXCEPTION_EXECUTE_HANDLER;
}

__try
{
     //EXCEPT!!!
    return STATUS_SUCCESS;
} __except (DebugPrint(_exception_info()))
понял, а вот я пытался через SEH , правильно я понимаю надо свои реализации тех методов писать то или как? системных, от STLки
 
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх