在 Ubuntu 上“调试触发错误”可以有多种含义,取决于错误类型和触发位置。下面我按常见场景给你一个分层排查与调试指南,你可以对照使用;如果有具体报错信息(终端输出、日志、截图),可以贴出来我帮你精准定位。
先判断属于哪一类:
| 类型 | 示例 |
|---|---|
| 命令错误 | command not found、permission denied |
| 程序崩溃 | Segmentation fault (core dumped) |
| 服务异常 | failed to start xxx service |
| 系统/内核级 | kernel panic、卡死 |
| 脚本/代码错误 | Python / Shell / C++ 报错 |
| 软件包问题 | apt 依赖、冲突 |
终端里最后 10–30 行非常关键:
command_that_failed
记下:
journalctl -xe
journalctl -b
journalctl -p err
systemctl status xxx
journalctl -u xxx
示例:
systemctl status nginx
journalctl -u nginx
ulimit -c unlimited
触发错误后会生成 core 文件。
gdb ./your_program core
常用命令:
bt
info locals
info registers
bash -x your_script.sh
或脚本里加:
set -x
| 错误 | 原因 |
|---|---|
command not found |
PATH 或拼写 |
Permission denied |
未 chmod +x |
No such file or directory |
路径错误 |
sudo apt update
sudo apt -f install
sudo dpkg --configure -a
apt-cache depends xxx
apt-cache rdepends xxx
dmesg | less
常用:
dmesg | grep -i error
dmesg | grep -i oom
program_name
终端通常会输出 GUI 程序内部错误。
| 日志 | 位置 |
|---|---|
| 系统日志 | /var/log/syslog |
| 内核日志 | /var/log/kern.log |
| 登录 | /var/log/auth.log |
| apt | /var/log/apt/ |
| X11 | ~/.xsession-errors |
strace # 系统调用
ltrace # 库调用
gdb # 程序调试
htop # 实时资源
dmesg # 内核信息
请直接贴出:
✅ 完整报错文本
✅ 在什么操作后触发
✅ Ubuntu 版本(lsb_release -a)
✅ 是命令 / 程序 / 服务 / 脚本?
例如:
Ubuntu 22.04,运行
./demo出现 Segmentation fault,使用 C++ 编写
我可以一步一步带你调试。