Процесс Go запущен. Я хочу
- выгрузить трассировку стека для каждой из своих программ
- извне, вне зависимости от того, что я добавляю в его исходный код
- не убивая его.
Как я могу это сделать?
Это должно быть легко - функция была запрошена: https://code.google.com/p/go/issues/detail?id=2516 и, согласно заключению этого потока, реализована. Это было более двух лет назад. Но ни ветка проблемы, ни коммит не содержат подсказок о том, как вызвать эту функцию.
Запрос функции упомянул SIGQUIT как сигнал, который JVM принимает для вызова соответствующей функции. Но SIGQUIT не является ответом; по крайней мере, на go1.2 SIGQUIT выполняет # 1 и # 2, но также убивает процесс.
Кто-то задал здесь связанный вопрос некоторое время назад: Как вывести дампы из стека goroutine? но они четко не просили № 2 или № 3, ни один из ответов не соответствует № 2, и они приняли ответ, который не соответствует № 2. Так что это другой вопрос.