我正在使用Ubuntu 14.04。
安装某些应用程序后,我遇到了分段错误(核心转储)错误。
这是什么意思 ?我该如何解决这个问题?
例如:
安装chrome-stable之后,从终端启动时会遇到此错误。
sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome。然后以隐身模式运行google-chrome --incognito
我正在使用Ubuntu 14.04。
安装某些应用程序后,我遇到了分段错误(核心转储)错误。
这是什么意思 ?我该如何解决这个问题?
例如:
安装chrome-stable之后,从终端启动时会遇到此错误。
sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome。然后以隐身模式运行google-chrome --incognito
Answers:
请参阅AU:什么是分段错误?还有一些如何重现它的示例,所以:什么是分段错误?。我可以提供的最简单的描述(可能不是完美的):
该程序试图访问其自身区域之外的存储区域。操作系统阻止了它。
某些情况:用初始化的指针读取值,超出数组范围,调用函数(不保持向后兼容性时),...
但是,使用大型程序或那些依赖其他项目库的程序往往很难找到原因。大多数情况下,最终都会针对目标程序或相关程序(上游项目或下游分发程序包)给出错误报告。
如果您未进行任何自定义配置/设置,并且已安装所有更新。生成错误报告,请参阅如何报告错误?
如果Ubuntu支持开源,请使用ubuntu-bug(apport-bug)。对于第三方关闭源,请查看其帮助页面如何报告错误并收集相关数据。
注意:如果您甚至没有一点编程背景,建议您尽力解决该问题。多年来,有许多错误报告处于无效状态。或者至少收集足够的调试数据以在报告问题之前解决问题。
apport-bug 日志/核心转储/回溯如果您没有细分错误之前的错误消息。使用--saveoption 运行它,并查找回溯日志:
apport-bug program-cmd --save bug-report_output.txt
gdb 回溯/调试源代码如果不起作用,请使用gdb:
$ gdb program-cmd
(gdb) run
(gdb) backtrace
如果收到任何错误消息,请检查网站,启动板和上游项目错误跟踪器中是否有类似情况。
对于某些高级用户或遵循ac / c ++学习路径的用户,他们可以下载相应的-dbg符号包。然后,您可以gdb用来跟踪通过源的程序流,并获得引起运行时错误的确切功能/指令。
strace 系统调用跟踪strace我喜欢它,这可能是另一个有用的工具。这确实是一个强大的工具。
它展示了自己:
在最简单的情况下,
strace运行指定的命令直到其退出。它截获并记录由进程调用的系统调用和由进程接收的信号。每个系统调用的名称,其参数及其返回值都会在标准错误或使用-o选项指定的文件上显示。
strace是有用的诊断,说明和调试工具。系统管理员,诊断人员和疑难解答人员将发现,对于解决程序源问题不可用的问题,它无价之宝,因为无需重新编译它们即可跟踪它们。学生,黑客和过于好奇的人会发现,即使跟踪普通程序,也可以学到很多有关系统及其系统调用的知识。而且程序员会发现,由于系统调用和信号是在用户/内核界面上发生的事件,因此仔细检查此边界对于错误隔离,健全性检查和尝试捕获竞争状况非常有用。
资源: man strace
ltrace 动态库调用跟踪
ltrace是一个仅运行指定命令直到退出的程序。它截取并记录由执行的进程调用的动态库调用以及该进程接收的信号。它还可以截取并打印程序执行的系统调用。它的用法与
strace(1)非常相似。
资源: man ltrace