2012-04-26 2 views
0

Можно ли сделать следующее? Я очень новичок в программировании Windows, поэтому то, о чем я прошу, может варьироваться от невозможного до бессмысленного. Если я правильно понимаю, такие ошибки, как деление на ноль или нарушение доступа, обрабатываются механизмом структурированных исключений Windows. Я хотел бы сбросить в файл журнала максимальный объем доступной информации, включая предпочтительно трассировку стека при возникновении структурированного исключения. Я использую MSVC10, окна 7.Регистрация ошибок SEH в C++

Редактировать: Не связанный вопрос заключается в том, является ли это разумной вещью? Будет ли стек содержать достаточную полезную информацию, чтобы помочь в отладке, то есть имена функций. Также, как лучше всего сбросить стек, поймав это исключение? Thanks

+0

Да, вы можете уловить структурированные исключения: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681415(v=vs.85).aspx, хотя эта старая статья может быть самой окончательный: http://www.microsoft.com/msj/0197/exception/exception.aspx – birryree

ответ

1

Да, это возможно. Здесь вы можете найти образец: try-except Statement.

Но для неожиданных исключений SEH лучше рассмотреть dump creation, иначе может быть сложно найти причину.

+0

Спасибо за предложение создания дампа. Возможно ли, чтобы дамп содержал стек в момент вызова, и если да, могут ли это имена функций, а не адреса? – stas

+0

Если вы создаете файл PDB для сборки релиза, вы получите имена функций вместо адресов в стеке вызовов. Кроме того, дамп позволяет получить стек для всех потоков вашего приложения. – Eugene

Смежные вопросы