Как моделировать ошибки распределения памяти

Используйте следующий код:

all_pageList = driver.find_elements_by_xpath("//li[contains(@class,'artdeco-pagination__indicator')]")
driver.find_elements_by_xpath("//li[contains(@class,'artdeco-pagination__indicator')]//button//span")[len(all_pageList)-1].text
print(len(all_pageList))
22
задан Gulzar Nazim 20 September 2008 в 19:00
поделиться

10 ответов

Создайте свою собственную malloc обертку, которая случайным образом возвратит пустой указатель вместо допустимого указателя. Ну, или который последовательно перестал работать, если Вы хотите к модульному тесту.

13
ответ дан 29 November 2019 в 04:06
поделиться

В операционных системах, которые превышают возможности памяти (например, Linux или Windows), просто не возможно обработать ошибки из памяти. malloc может возвратить допустимый указатель и позже, когда Вы пытаетесь разыменовать его, Ваша операционная система может решить, что Вы вне памяти и уничтожаете процесс.

http://www.reddit.com/comments/60vys/how_not_to_write_a_shared_library/ является хорошей рецензией на этом.

8
ответ дан 29 November 2019 в 04:06
поделиться

Можно записать собственную ложную библиотеку с тем же интерфейсом как сторонняя библиотека вместо него. Можно также использовать LD_PRELOAD для переопределения выбранных функций сторонней библиотеки.

6
ответ дан 29 November 2019 в 04:06
поделиться

Я могу дать Linux (возможно, POSIX) определенная версия: __ malloc_hook, __ realloc_hook, __ free_hook. Они объявляются в malloc.h.

РЕДАКТИРОВАНИЕ: Немного разработки: это указатели функции (см. malloc.h и их страницу справочника для точного объявления), но остерегайтесь: это не точно стандарты, просто расширения GNU. Таким образом, если мобильность является проблемой, не используйте это.

Немного менее зависимое от платформы решение могло бы состоять в том, что Вы объявляете malloc макрос. Если Вы тестируете, это называет рычаг и реальный malloc.

memhook.h:

#define malloc(s)    (my_malloc(s))

memhook.c:

#include "memhook.h"
#undef malloc
#include <stdlib.h>

и т.д.

можно использовать это, чтобы обнаружить утечки, случайным образом привести выделение к сбою, и т.д.

3
ответ дан 29 November 2019 в 04:06
поделиться

Кроме того, необходимо использовать Valgrind, чтобы протестировать все это и получить реальные полезные отчеты о поведении памяти программы

1
ответ дан 29 November 2019 в 04:06
поделиться

Вы хотите команду ulimit в ударе. Попробуйте

help ulimit
при приглашении оболочки удара.
0
ответ дан 29 November 2019 в 04:06
поделиться

(Как дополнение к некоторым предыдущим ответам)

Контроль "Электрический Забор" для примера библиотеки malloc-прерывания, которой можно пользоваться с исполняемым файлом (использование приема LD_PRELOAD, например).

, Как только Вы прервали malloc, можно использовать то, что Вы хотите инициировать отказы. Случайным образом инициированный отказ был бы хорошим стресс-тестом для различных частей системы. Вы могли также изменить вероятность отказа на основе объема памяти, который требуют.

Ваш - интересная идея, между прочим, ясно что-то, что я хотел бы сделать на части моего кода...

0
ответ дан 29 November 2019 в 04:06
поделиться

Вы могли бы хотеть посмотреть на часть восстановления, ориентированного на вычислительные сайты, такой как группа ПТИЦЫ РУХ Беркли/Стэнфорда. Я услышал некоторых из этих людей разговор прежде, и они используют код для случайного введения ошибок во времени выполнения C. Существует ссылка на их инструмент FIT у основания их страницы.

0
ответ дан 29 November 2019 в 04:06
поделиться

Можно использовать ulimit для ограничения суммы ресурсов, которые пользователь может использовать, включая память. Таким образом, Вы создаете проверочного пользователя, ограничиваете их использование памяти чем-то как раз для запуска программы и часов, это умирает:)

Пример:

ulimit -m 64

Устанавливает предел памяти 64 КБ.

22
ответ дан 29 November 2019 в 04:06
поделиться

Посмотрите , как sqlite3 делает это . Они выполняют обширное модульное тестирование, в том числе тестирование нехватки памяти.

Вы также можете посмотреть их страницу на malloc , особенно раздел 4.0 .

0
ответ дан 29 November 2019 в 04:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: