Всем привет. есть макрос если под отладчиком запустить и сработает бряк то статус последней ошибки сохраняется если без отладчика то в запустившемся отладчике значение последней ошибки всегда 0 почему так ? Код (Text): #ifdef _DEBUG #define BREAKMACRO() __asm {int 3} #else #define BREAKMACRO() do {} while (0) #endif #define return_val_if_fail(expr,val) \ do{ \ if (!(expr)){ \ DWORD dwLastErr = GetLastError(); \ AllocConsole(); \ freopen("CONOUT$", "wt", stderr); \ fprintf(stderr, "%s %d\n", __FUNCTION__, __LINE__); \ SetLastError(dwLastErr); \ BREAKMACRO(); \ return val; \ } \ }while (0) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT) { BOOL IsSuccessCall = SomeApiCall... return_val_if_fail(IsSuccessCall, 0xdeadc0de); return 0; }
нет у меня AеDebug настроен на запуск Olly Debugger дело в том что когда она запускается LastError равен 0 хотя инструкцией выше идет вызов SetLastError но после прерывания его значение меняется на 0 почему то а вот если прогу прогонять сразу под отладчиком то когда брякаемся все хорошо сохраняется
c4m310t хмм или я вас не понимаю или вы не понимаете зачем мне это надо сех оно для чего ? мне надо коды возврата после каждой функции проверять писать в дебуг оутпут и возвращать код ошибки а в дебаг версии еще и в отладчик вываливатся чтоб видеть что не одна функция не дала сбой и потихому операция не откатилась или приведите пример как сех поможет в этом
osox зачем в отладчик вываливаться то ? установите СЕХ и все, если что то упадет - получите управление в СЕХ обработчике своем...
c4m310t можно пример ? кусочек кода с такой обработкой ошибок а то мне кажется мы разного хотим вот например как мы окажемся в обработчике если функция вернула код ошибки никакого исключения небыло сгенерено а нам надо залогировать это дело и в коде чтоб как нибудь покороче было