В TotalView, пункт меню File> Signals открывает это окно:
Это для управления поведением по умолчанию в ответ на сигнальные вызовы.SIGTRAP и SIGSTOP зарезервированы, и, похоже, TotalView обрабатывает их по-разному.То есть raise(SIGSTOP)
не остановился, как ожидалось, в TotalView.
Эта программа:
#include <signal.h>
main(int argc, char* argv[])
{
raise(SIGTRAP);
}
выдает такой ответ:
Неожиданное прерывание не вызвано точкой останова!
И состояние программы указывается как «Выйти или не создано».Когда SIGTRAP заменяется на SIGSTOP, происходит тот же результат, но без сообщения «Неожиданно ...».
Как показано на рисунке выше, SIGINT, SIGTSTP, SIGTTIN и SIGTTOU по умолчанию приводят TotalView к остановке, как если бы была точка останова.
По аналогии с ответом, предоставленным Mooing Duck ( Totalview: есть ли способ жестко закодировать точку останова? ), эти вызовы Повышение () можно при желании сделать, если выпопытка отладки:
#ifdef DEBUG
raise(SIGTSTP)
#endif
Это всего лишь один из многих способов получить желаемый эффект жестко закодированной точки останова.