【发布时间】:2010-07-23 10:11:54
【问题描述】:
我想使用克隆来记录我的程序的当前状态。 它有很多循环,我想在不打印每个循环迭代中的状态的情况下跟踪该过程。
这就是我创建这个概念验证的原因:
#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,它可以正常工作。为什么?
你认为这是一个好习惯还是我迟早会遇到麻烦? 有没有更好的方法来实现这一点?
干杯,
曼努埃尔
【问题讨论】:
标签: c++ segmentation-fault clone