我的程序正在使用 libhdfs.so 进行 hdfs 读/写,我想设置一个断点进行调试,但是当这个程序运行到 hdfsConnect 点时,它会因分段错误而退出。
有趣的是,当我正常运行程序时,根本不会发生分段错误。
可能的根本原因是什么?在调试 libhdfs.so 时我应该设置一些运行时环境吗?
事实证明这是一个 JNI 问题,而不是 libhdfs.so 特定问题,可以在这里找到解决方案: Strange sigsegv while call java code from c++ through jni
可能的根本原因是什么?
可能的根本原因是程序中的错误,它在 GDB 下表现为崩溃,但在 GDB 之外运行时仍然隐藏。
这使得问题更容易调试:相反(在 GDB 之外崩溃,在 GDB 下工作)通常更难。
你的第一步应该是在 Valgrind 下运行程序并确保它是干净的。