【发布时间】:2014-02-11 15:04:04
【问题描述】:
我知道有关于这个主题的问题日志,但是我找不到我的问题的答案。 我有一个在 linux-VM 上构建的程序,没有任何问题。我可以运行程序。 我已经为这个程序创建了一个安装文件。在这个安装结构中,我可以找到我的构建程序。在这个位置,一切运行都没有问题。
如果我在另一个 linux-VM 上安装我的程序,我会收到错误“Segmantation fault (core dumped)”。当我从将原始项目复制到以进行安装的临时文件夹中运行程序时,也会发生此错误。它包含与安装结构中第一个 VM 上相同的文件。
到目前为止,我发现的唯一答案是指针指向错误的内存和平的问题。但我不敢相信就是这样,因为我的程序在第一个 VM 上运行良好。谁能帮我从哪里开始寻找?
【问题讨论】:
-
您应该从程序中的一些打印开始,以便找到失败的行。或者如果你知道怎么做就更好了:使用一些调试工具,比如 netbeans 提供的工具,逐行跟踪程序的执行。
-
或者更好的是,编译一个调试版本并在调试器中运行。
-
我继承了程序。它包含 5 个解决方案和 2000 多个文件。首先,在我有时间开始挖掘代码之前,我必须能够构建一个分发它。所以添加一些打印并不是那么容易。
-
我做了一个调试版本并在调试器中运行它。这没有带来任何问题。
-
看起来“运行良好”的东西等同于定义明确是错误的。 观察到的行为不应等同于定义行为。你不能假设后者是真实的,因为前者是真实的。程序崩溃的原因有很多,几乎所有原因都涉及调用对后者的违反。您需要调试该核心文件,至少是调用堆栈以了解事情的发展方向。走你的代码路径,你至少认为是通过视觉检查绊倒的。