【发布时间】:2012-07-25 16:14:53
【问题描述】:
我正在努力避免出现此 Stackoverflow 条目中描述的情况:Debugging core files generated on a Customer's box。如果我静态编译所有库,我会避免在核心转储时始终收集共享库吗?我基本上想处于一种可以使用 gdb 加载核心文件并检查崩溃的应用程序的情况。
如果我走静态链接我们需要的所有库的路线,我应该注意什么。我认为 glib 和 pthreads 可能会导致最大的问题。
Valgrind 会不再有用吗?如果我针对所有静态编译的二进制文件加载 Valgrind,它会发现错误吗?或者我们应该维护一个非静态编译的二进制文件,以便 Valgrind 继续工作。 strace 呢?
我们经常崩溃,因为我们拥有庞大的安装基础,而且它也是一个遗留应用程序。收集所有共享库变得难以处理 - 我需要另一个解决方案。
编辑:修正错字。
【问题讨论】:
-
你总是需要核心文件;否则,您将如何检查崩溃时的内存内容。
-
@Ignacio Vazquez-Abrams,谢谢。我的意思是共享库。
-
其实你不需要库本身;调试符号就足够了(虽然不是总是可用)。
-
@IgnacioVazquez-Abrams 如果您费心阅读链接的问题,您会发现您的评论是 false。
-
@Employed:链接问题的哪一部分反驳了我所说的?
标签: c++ linux gdb libc postmortem-debugging