作为 Linux/Unix 用户,我们经常遇到问题。经过长时间的解决问题,我们培养了调试技能。
现在,在尝试调试一般的 UNIX 问题时,好的原则、方法或最佳实践是什么?
作为普通用户,我应该拥有哪些工具才能更轻松地找到问题的原因?
答案1
方法将取决于问题的类型。
一般来说 ”如何以聪明的方式提出问题埃里克·雷蒙德 (Eric S. Raymond) 和里克·莫恩 (Rick Moen) 撰写的“有时是一个有用的建议,可以帮助您专注于问题并检查您是否考虑过问题的重要部分。
调试期间的第一个信息来源是系统/应用程序写入的日志文件。它们的常见位置是您的终端或/var/log/
.许多应用程序支持不同类型的日志级别,如果找不到任何可用的消息,则应该增加日志级别。通常有一个-v
详细的开关来获取更多消息。
还是没有什么可以用的吗?检查您的配置文件、应用程序所需文件的权限,也许您必须更改系统记录器的配置,例如/etc/syslog-ng.conf
。
如果您有错误消息,谷歌搜索通常会导致留言板条目或使用网帖子讨论其背后的问题。您很可能可以在那里找到解决方案。项目用户邮件列表、留言板和 IRC 频道也非常有帮助。
有时应用程序会崩溃而没有任何消息。除了阅读和修改代码之外,还有一个发现应用程序流程的好工具strace
。
该工具将跟踪系统调用和信号。当应用程序捕获错误时,您仍然可以在 systrace 中发现问题。
另一种方法是使用 调试应用程序gdb
。您应该是高级用户并且知道该怎么做才能使用它。
答案2
如果您想要一个单一的、通用的调试原则,那就是:尽可能多地了解系统是如何工作的。了解系统的每个组件以及每个组件的故障模式。请注意您最近更改了哪些组件,以及哪些组件可能已更改或自行失败。
如果您正在寻找具体信息,那么 echox 的答案有很多有用的信息。