ошибка сегментации, вызванная тестами, запущенными под CppUnit - PullRequest
0 голосов
/ 22 декабря 2010

Сегодня я обнаружил, что в одном из моих тестов используется какой-то код / ​​библиотека, которая не работает.Я работаю в среде Linux на C ++ и CppUnit.

Есть ли какая-либо функция в CppUnit для тестирования на segfault и сообщения об этом как о сбое для конкретного контрольного примера?

В CppUnit я могу даже тестировать исключения, но я думаю, что то, что я спрашиваю, может быть слишком много!Единственное, что я нашел, это раздел Как мне распечатать отладочную информацию на этой странице здесь .

Я думал запустить исполняемый файл CppUnit из скрипта на pyhon или perl, а затем проверить,ядро производится.Ты знаешь какой-нибудь лучший способ добиться того, чего я хочу?

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Ошибка сегмента приведет к ненулевому состоянию выхода из вашего теста (на Solaris я считаю, что это 139). Вы можете проверить это из любого метода, который используется для вызова вашего модульного теста?

0 голосов
/ 22 декабря 2010

"Есть ли какая-либо функция в CppUnit для тестирования на segfault и сообщения о сбое для конкретного теста?"

Нет. Segfault является нарушением уровня операционной системы, и вы не можете его поймать. Даже если вы попытаетесь (с помощью signal () iirc), вы ничего не сможете сделать, чтобы быть убитым ОС.

Вам нужно пройти через тестовую программу с помощью отладчика.

...