【发布时间】:2019-09-12 21:59:19
【问题描述】:
我有一个基于 C 和 C++ 的项目,这是我第一次构建和链接,它在执行时出现段错误。我尝试在 gdb 中运行它以获取回溯,结果如下:
gdb) run
Starting program: /home/jon/controlix-code/bin/controlix
During startup program terminated with signal SIGSEGV, Segmentation fault.
(gdb) bt
No stack.
(gdb)
我认为它在 main() 被调用之前崩溃了,但除此之外我没有任何线索。我在谷歌上找不到太多关于这种情况的信息,所以我想我会在这里问。
【问题讨论】:
-
使用构造函数或重要的初始化逻辑检查所有全局变量。我假设您有大量代码,而 minimal reproducible example 是不可能的?
-
你为什么用两种完全不同的语言写作。该问题可能是在构建全局变量期间引起的。为什么你有全局变量?这可能意味着您的全局变量的初始化顺序存在错误。查看如何对全局变量进行排序。
-
请展示您的代码,专注于导致段错误的最小代码。其他人可能会从你的实际错误中学到更多(比如你的代码做错了什么),然后是你如何使用 gdb 或其他技术来确定原因,但两者都比两者都更有帮助。