Как обнаружить точку переполнения стека

Дублирование данных - почти всегда плохая идея. Это будет означать, если вы напишите "Привет, Вурльд!" в Зону 1, 2 и 3 - вам нужно обновить этот пост до "Hello World!" во всех 3 зонах.

WordPress имеет особую функциональность для категоризации типов постов, называемых Таксономии . В вашем случае я бы оценил, будет ли достаточно использования таксономии под названием «Зона» с терминами «Зона 1», «Зона 2», «Зона 3» и т. Д. Для одного типа сообщения. (Думайте о терминах таксономии в основном как категории).

Если вы решили, что не хотите или не можете прислушаться к этому совету, вы можете воспользоваться перехватом WordPress ' save_post и позвонить [111 ] внутри него с копией текущей информации $post_id, обернутой внутри вашей логики, чтобы определить, в какие «зоны» она должна быть отправлена ​​

10
задан lothar 13 April 2009 в 00:52
поделиться

3 ответа

Нижний регистр верблюда рекомендуется для полей и параметров.

Пример 1 :

fileName // for fields, parameters, etc.
FileName // for properties, class names, etc.

Обычно используется fileName , а НЕ имя файла ; Вы можете убедиться в этом, прочитав исходный код материалов с открытым исходным кодом, созданных Microsoft, таких как Enterprise Library .

Причины :

  1. Основная точка , стоящая за этим, - что имена в этом случае более читабельны.
  2. Также этот подход добавляет согласованность , когда несколько параметров (полей, переменных ..) используются в одном и том же методе (классе ..) и с тем же префиксом " file ", как показано ниже:
  3. ... есть несколько других причин, но они более субъективны.

Пример 2 :

fileName, fileSize... // instead of filename AND filesize

См. также : но в большинстве случаев bt выдаст кучу рекурсивных вызовов одного и того же метода.

Файл ядра может иметь другое имя, которое может включать идентификатор процесса, это зависит от конфигурации ядра по умолчанию в вашей текущей системе, но можно управлять с помощью (запустить от имени root или с помощью sudo):

$ sysctl kernel.core_uses_pid=1
17
ответ дан 3 December 2019 в 15:22
поделиться

С GCC вы можете попробовать это:

-fstack-protector
Выдать дополнительный код для проверки переполнения буфера, такого как атаки с разбивкой стека. Это делается путем добавления переменной защиты к функциям с уязвимыми объектами. Это включает в себя функции, которые вызывают alloca, и функции с буферами, размер которых превышает 8 байтов. Защитные устройства инициализируются при входе в функцию, а затем проверяются при выходе из функции. Если контрольная проверка не пройдена, выдается сообщение об ошибке и программа завершается.

-fstack-protector-all
Аналогично -fstack-protector, за исключением того, что все функции защищены.

http: //gcc.gnu .org / onlinedocs / gcc-4.3.3 / gcc / Optimize-Options.html # Optimize-Options

8
ответ дан 3 December 2019 в 15:22
поделиться

Когда программа умирает с SIGSEGV, она обычно выгружает ядро ​​в Unix. Не могли бы вы загрузить это ядро ​​в отладчик и проверить состояние стека?

4
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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