假设我的二进制文件在我无法core dump
使用ulimit -c
. 工程师如何segmentation faults
在如此真实的场景中调试?是否有任何其他方法可以在不core dumps
生成的情况下调试或识别崩溃。
考虑下面的示例是打算等到另一个线程存储42
在一个共享变量shared
没有锁,无需等待线程终止,为什么会volatile T
或std::atomic<T>
会要求或建议,以保证并发正确性?
#include <atomic>
#include <cassert>
#include <cstdint>
#include <thread>
int main()
{
int64_t shared = 0;
std::thread thread([&shared]() {
shared = 42;
});
while (shared != 42) {
}
assert(shared == 42);
thread.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用 GCC 4.8.5 和默认选项,示例按预期工作。
fsync(2) 联机帮助页告诉如果同步文件,则明确需要同步目录。
io包中Java的sync方法怎么样?是在意那个吗?它是否取决于操作系统和/或文件系统?
我在http://docs.oracle.com/javase/7/docs/api/java/io/FileDescriptor.html#sync 中发现没有任何帮助...
linux ×2
c++ ×1
c++11 ×1
concurrency ×1
crash ×1
crash-dumps ×1
debugging ×1
fsync ×1
java ×1
linux-kernel ×1
stdatomic ×1