[英]Unable to identify reasons for signal SIGSEGV, Segmentation fault
我在 ubuntu 中运行一个 cpp 程序。 我收到信号 SIGSEGV,分段错误。
我尝试使用 gdb 来查看分段错误的确切行。 我从这个问题中得到了这个想法:
gdb 向我返回这个:
Thread 1 "incremental_sat" received signal SIGSEGV, Segmentation fault.
0x00007ffff7857c50 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
请看下面的终端截图:
我正在使用涉及所有类型的向量的数据结构和用于 int 和 string 的 unordered_map。
我可以知道,所有代码行都是导致此错误的原因吗?
我是 CPP 调试的新手。 关于我可以继续处理此信息的方向的任何建议?
更新:在运行“bt”命令的建议之后,我添加了 output:
我观察到它在调用 cnf_transformation_out_diff() function 后出现分段错误。 因为它甚至没有打印用 cnf_transformation_out_diff() function 编写的第一个 cout 命令。
最后,我在朋友 Arpan 的帮助下解决了这个 bug。
在一种情况下,数据结构 gates_out_diff 保持为空。 我没有添加安全检查,程序正在访问 gates_out_diff[i][1] 值,因此导致了分段错误。
在我修复了那个案例之后它正在运行。 我花了一天时间。 希望它可以节省某人的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.