Я хочу использовать клон для регистрации текущего состояния моей программы.
В нем много циклов, и я хочу отслеживать процесс, не печатая состояние в каждой итерации цикла.
Вот почему я создал это доказательство концепции:
#include <iostream>
#include <cstdlib>
unsigned int i;
int log(void*) {
std::cout << "LOGGING START" << std::endl;
while(true) {
sleep(1);
std::cout << i << std::endl;
}
}
int main() {
void **child_stack = (void**)malloc(16384);
i = 0;
std::clog << "calling clone" << std::endl;
clone(log, child_stack, CLONE_VM | CLONE_FILES, NULL);
std::clog << "done" << std::endl;
while(true) {
++i;
}
return 0;
}
Когда я запускаю его без GDB, он падает с ошибкой сегментации в clone (), но работает нормально, если я использую GDB. Почему?
Как вы думаете, это хорошая практика или у меня рано или поздно возникнут проблемы?
И есть ли лучший способ добиться этого?
Приветствия
1012 * Manuel *