Чистый способ явным образом схватить приложение?

StackOverflow https://stackoverflow.com/questions/3626139

  •  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 () еще один способ сбояться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top