Я пытаюсь устранить проблему волосатую ошибку , которая связана с повреждением определенного целого числа в памяти. Я могу установить точку наблюдения и надеюсь зафиксировать обратный след того, что меняет это конкретное значение.
Сложность имеет значение, ошибка возникает только в производстве, и только несколько раз в день. И ошибка возникает в веб-сервере Python, называемом gunicorn, который является предварительным форк-сервером. Разрушение происходит в одном из рабочих детей, а не в главном процессе.
Проблема в том, что по умолчанию GDB не будет отлаживать дочерние элементы, созданные fork()
. Если он настроен для этого с set detach-on-fork off
, то он может отлаживать рабочие процессы, но он также отлаживает другие подпроцессы, если один из рабочих выполняет fork()
и exec()
.
Так есть ли способ настроить GDB на:
- отладка дочерних процессов, создаваемых
fork()
, и
- отсоединиться от процесса, когда он
exec()
?
Или, может быть, есть какой-то другой подход к проблеме отладки рабочих потомков сервера перед вилкой?