Чистый способ явным образом схватить приложение?
-
26-09-2019 - |
Вопрос
Мое приложение имеет настраиваемый встроенный сбои (см. Отличная книга Джона Роббинса о «отладке приложений Windows»). Чтобы проверить эту функцию, я всегда использовал функцию Windows Debugbok (), и это всегда работало идеально. Но поскольку Windows 7, вызывая эту функцию, просто говорит, что «точка останова была достигнута» и останавливает приложение, не вызывая моих дробильных обработчиков.
Я всегда мог бы поместить этот код в моем приложении, чтобы проверить функциональность сбоев:
int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
Или даже добавить несколько случаев, на случай, если 0xDeadbeef является действительным адресом:
int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
ptr = (int *)0L;
*ptr = 123456789;
ptr = (int *)0xffffffff;
*ptr = 123456789;
Но мне было интересно: нет ли более чистого способа разбить ваше приложение под Windows?
Решение
Просто создайте нулевой указатель на объект с некоторыми функциями участника, попробуйте и позвоните одному из них? И может сделать это в функции, так что вы знаете, что это да
void CrashApp()
{
MyObject * ptr = 0;
ptr->Function();
}
Определенно самый простой способ и довольно ясно, что происходит
Другие советы
Ты можешь использовать __debugbreak () внутренний вместо Debugbreak () функции. Это ничего не говорит и аварийки с Exception_breakPoint
Raiseexception () еще один способ сбояться.