静态链接系统库,libc,pthreads,以帮助调试
Statically linking system libraries, libc, pthreads, to aid in debugging
我正在努力避免这个Stackoverflow条目中描述的情况:调试在客户上生成的核心文件';s框。如果我静态编译所有库,我会避免在核心转储时总是收集共享库吗?我本质上想处于这样一种情况:我可以用gdb加载核心文件,并检查崩溃的应用程序。
如果我走静态链接我们需要的所有库的路线,我应该注意什么。我认为油嘴滑舌和深度阅读可能会造成最大的问题。
Valgrind会不再有用吗?如果我根据静态编译的二进制文件加载Valgrind,它会发现错误吗?或者我们应该维护一个不是静态编译的二进制文件,以便Valgrind继续工作。斯特拉斯怎么样?
我们经常崩溃,因为我们有一个庞大的安装群,而且它也是一个遗留应用程序。收集所有共享库变得越来越困难——我需要另一个解决方案。
编辑:修复了打字错误。
如果我静态编译所有库,我会避免在核心转储时总是收集共享库吗
是的。
然而,与流行的观点相反,静态链接的二进制文件比动态链接的二进制(至少在Linux上)的可移植性要低。
特别是,如果您使用以下函数中的任何一个:gethostbyname
、gethostbyaddr
、getpwent
、getpwnam
、getpwuid
(以及更多),您将在链接时收到警告,类似于以下内容:
Using 'getpwuid' in statically linked applications requires at runtime
the shared libraries from the glibc version used for linking.
此警告的意思是,如果您的客户安装的glibc版本与您在链接时使用的版本不同(即与系统libc版本不同),则程序可能会崩溃。由于这显然比您当前的情况更糟,我认为静态链接对您来说不是一个好的解决方案。
相关文章:
- C++需要所有声明的类型说明符和预期的非限定 id(需要调试帮助)
- 需要帮助调试"attribute parser"!C++ 来自黑客排名的问题
- 阐明关系运算符重载的概念(需要调试帮助)
- 调试套接字 c++ 代码并帮助我理解
- 函数无法正常工作,调试器没有帮助
- 需要帮助调试我的代码,以逆转字符串中的单词
- 我只需要一些调试帮助(C++)。我遇到了多个不确定如何解决的问题
- 静态链接系统库,libc,pthreads,以帮助调试
- 需要帮助调试一个奇怪的分段错误
- 需要帮助调试bad_alloc和out_of_range异常
- Solaris C++程序崩溃.有关 mdb 调试的帮助
- 请帮助在继承 #constructor_error 上调试此 c++ 代码
- 需要帮助调试我的第一个程序,Visual Studio 找不到.exe文件
- 需要帮助调试互斥锁死锁
- 帮助调试OpenGL glsl着色器或使用它的代码
- 混合语言代码文档-需要帮助调试氧
- 需要帮助调试从const char*到char* [-fpermissive]的无效转换
- 帮助调试visual studio中的c++
- c++通过GDB接收段错误,而不是xCode——需要帮助调试
- 需要帮助调试简单的更新二进制文件的功能