安装后分段错误

Posted

技术标签:

【中文标题】安装后分段错误【英文标题】:Segmentation fault after installation 【发布时间】:2014-02-11 15:04:04 【问题描述】:

我知道有关于这个主题的问题日志,但是我找不到我的问题的答案。 我有一个在 linux-VM 上构建的程序,没有任何问题。我可以运行程序。 我已经为这个程序创建了一个安装文件。在这个安装结构中,我可以找到我的构建程序。在这个位置,一切运行都没有问题。

如果我在另一个 linux-VM 上安装我的程序,我会收到错误“Segmantation fault (core dumped)”。当我从将原始项目复制到以进行安装的临时文件夹中运行程序时,也会发生此错误。它包含与安装结构中第一个 VM 上相同的文件。

到目前为止,我发现的唯一答案是指针指向错误的内存和平的问题。但我不敢相信就是这样,因为我的程序在第一个 VM 上运行良好。谁能帮我从哪里开始寻找?

【问题讨论】:

您应该从程序中的一些打印开始,以便找到失败的行。或者如果你知道怎么做就更好了:使用一些调试工具,比如 netbeans 提供的工具,逐行跟踪程序的执行。 或者更好的是,编译一个调试版本并在调试器中运行。 我继承了程序。它包含 5 个解决方案和 2000 多个文件。首先,在我有时间开始挖掘代码之前,我必须能够构建一个分发它。所以添加一些打印并不是那么容易。 我做了一个调试版本并在调试器中运行它。这没有带来任何问题。 看起来“运行良好”的东西等同于定义明确是错误的。 观察到的行为不应等同于定义行为。你不能假设后者是真实的,因为前者是真实的。程序崩溃的原因有很多,几乎所有原因都涉及调用对后者的违反。您需要调试该核心文件,至少是调用堆栈以了解事情的发展方向。走你的代码路径,你至少认为是通过视觉检查绊倒的。 【参考方案1】:

尝试调试它或使用 strace:

strace ./nameOfYourBinary

(如果没有,sudo apt-get install strace)

这应该有助于找出您的程序出了什么问题。 也许程序失败的虚拟机没有足够的内存(或其他)来运行你的程序。 还要检查所有的 malloc,如果你的代码中有它们。

【讨论】:

谢谢,我在失败的 VM 中使用了 strace,并将其与正常工作的 VM 中的 strace 进行了比较。现在我知道许可证文件有问题。

以上是关于安装后分段错误的主要内容,如果未能解决你的问题,请参考以下文章

警报处理程序中交换上下文后的分段错误

这段代码一次执行良好,另一次出现分段错误

在 C++ 中的向量中键入所有值后出现分段错误(核心转储)

为啥这段代码在 leetcode 运行良好,但在 geeksforgeeks 出现分段错误?

C 中 Trie 实现中的分段错误

python跟踪分段错误