另一个系统上的应用程序在启动时崩溃,没有 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 提示符下输入 where
或 bt
。
哦,好吧,我将为两者编译。非常感谢!以上是关于另一个系统上的应用程序在启动时崩溃,没有 sudo 的错误消息,非 sudo 的分段错误的主要内容,如果未能解决你的问题,请参考以下文章
应用程序在启动另一个带有意图和 .putExtra 的活动时崩溃
重新启动活动时,Android Wear 上的融合位置提供程序会导致崩溃