另一个系统上的应用程序在启动时崩溃,没有 sudo 的错误消息,非 sudo 的分段错误

Posted

技术标签:

【中文标题】另一个系统上的应用程序在启动时崩溃,没有 sudo 的错误消息,非 sudo 的分段错误【英文标题】:Application on another system crashes on startup without error message for sudo, Segmentation Fault for non-sudo 【发布时间】:2014-04-17 20:44:47 【问题描述】:

我在 Ubuntu 13.10 上编写了一个 websocket++ 服务器,并试图在 Linux Mint 16 上执行它。

我已经安装了所有依赖项,main 下的第一行是一个永远不会触发的cout

这是编译命令:

g++ -o Dgn Dgn.cpp ed25519-donna-master/ed25519.o 
  -Og -std=c++0x -I ~/Dgn -D_WEBSOCKETPP_CPP11_STL_ -D_WEBSOCKETPP_NO_CPP11_REGEX_ 
  -lboost_regex -lboost_system -L/usr/lib -lssl -lcrypto -pthread -lpqxx 
  -lboost_thread -ljson_spirit -lgmp -lgmpxx

如果我使用sudo 执行以使用受限端口,它会立即失败而不会返回命令行错误。

如果我在没有sudo 的情况下执行,则打印Segmentation Fault 并立即失败到命令行。

~/Dgn 中的目录存在于新系统中。

我做了一个快速、简单的测试,看看一个基本的websocket++示例是否可以正常编译和执行,并且是成功的。

两个系统都是 64 位的。唯一的区别是发行版,但 Linux Mint 16 基于 Ubuntu 13.10,所有设置命令都是相同的。

如何编译才能在另一个系统上执行?


作为进一步的测试,我在新系统上编译它,它可以工作。

难道不能在一个系统上编译并在另一个系统上运行吗?

GDB

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de58da in ?? () from /lib64/ld-linux-x86-64.so.2

【问题讨论】:

帮助 ftp 二进制文件为...二进制 【参考方案1】:

cout 行永远不会触发(我假设它有<< std::endl)这一事实意味着崩溃发生在静态对象构造函数中。最直接的调试方法是允许核心转储(请参阅man limits)并使用 gdb 检查转储。到目前为止,这就是我能想到的。更多细节会有所帮助。

【讨论】:

谢谢!我已经发布了gdb 输出。你知道怎么解决吗? 并非如此,但这是一个好的开始。下一步是在 gdb 提示符下输入 wherebt 哦,好吧,我将为两者编译。非常感谢!

以上是关于另一个系统上的应用程序在启动时崩溃,没有 sudo 的错误消息,非 sudo 的分段错误的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在启动另一个带有意图和 .putExtra 的活动时崩溃

重新启动活动时,Android Wear 上的融合位置提供程序会导致崩溃

应用商店和某些设备上的应用程序崩溃

添加库后qt应用程序在启动时崩溃

React Native:由于 SoLoader 问题,应用程序在启动时崩溃

作为系统应用程序时,应用程序在启动时崩溃