Как запустить несколько экземпляров Android Studio

Обратите внимание, что abort вызывает сигнал SIGABRT, как если бы он назывался raise(SIGABRT). Вы можете установить обработчик сигнала, который вызывается в этой ситуации, например:

#include 

extern "C" void my_function_to_handle_aborts(int signal_number)
{
    /*Your code goes here. You can output debugging info.
      If you return from this function, and it was called 
      because abort() was called, your program will exit or crash anyway
      (with a dialog box on Windows).
     */
}

/*Do this early in your program's initialization */
signal(SIGABRT, &my_function_to_handle_aborts);

Если вы не можете предотвратить вызовы abort (скажем, из-за ошибок, которые ползут, несмотря на ваши лучшие намерения), это может позволить вам собрать дополнительную информацию об отладке. Это портативный ANSI C, поэтому он работает и с Unix и Windows, и с другими платформами, хотя то, что вы делаете в обработчике прерывания, часто не будет переносимым. Обратите внимание, что этот обработчик также вызывается, когда assert терпит неудачу или даже другими функциями времени выполнения, скажем, если malloc обнаруживает повреждение кучи. Таким образом, ваша программа может оказаться в сумасшедшем состоянии во время этого обработчика. Вы не должны выделять память - используйте статические буферы, если это возможно. Просто сделайте минимум, чтобы собрать необходимую информацию, получить сообщение об ошибке пользователю и выйти.

Некоторые платформы могут дополнительно настроить их функции abort. Например, в Windows Visual C ++ имеет функцию _set_abort_behavior , которая позволяет вам выбрать, будет ли отображаться сообщение пользователю, и собираются ли аварийные свалки.

148
задан Farskeptic 18 August 2013 в 13:41
поделиться