openSUSE:YaST 调试

跳转到:导航搜索

此页面部分与 如何报告 YaST 错误 重叠,您也可以在那里找到一些调试技巧。

日志

日志位于/var/log/YaST2。主要日志文件是y2log,它会被轮转到y2log-[1-9]。如果 YaST 以非 root 用户身份运行,日志将位于~/.y2log, ~/.y2log-[1-9].

如果您需要查看用户在安装过程中执行的步骤,请查看macro_inst_initial.ycpmacro_inst_cont.ycp在日志目录中。这些是在安装过程中自动记录的 UI 宏,它们显示了在小部件中输入的值(密码已屏蔽)以及按下的按钮。(您可以在yast2-qt中通过 Ctrl-Alt-Shift-M 和 Ctrl-Alt-Shift-P 调用此功能。)

更多日志消息

可以通过多种方式启用调试日志消息

Y2DEBUG=1
这是一个环境变量。用法如下:Y2DEBUG=1 /sbin/yast2 lan它也适用于安装期间的内核命令行。
UI 对话框
在 Qt UI 中按 Shift-F7 以在运行时切换调试消息。
信号
向 y2base 进程发送 USR1 信号以切换调试日志。killall -USR1 y2base

还有用于控制 libzypp(YaST 使用的包管理库)事件的日志级别的环境变量

ZYPP_MEDIA_CURL_DEBUG=1
启用详细的 CURL 信息日志。对于调试与安装或包管理相关的网络问题很有用。

strace

Strace 对于调试 YaST 和其他程序也非常有用。这里有一些基础知识

这是一个常用的行Y2DEBUG=1 strace -eopen -ostrace.log /usr/lib/YaST2/bin/y2base lan qt.

gdb

请参阅 gdb 手册

调试 YaST 的一个复杂之处在于,它动态加载其组件,这意味着当您想要在代码的一部分设置断点时,代码尚未加载。解决方法是在关键位置设置辅助断点

  • main
  • ScriptingAgent

openSUSE 11.0 Alpha 3 将具有在安装期间从 gdb 启动 YaST 的调试功能。要激活此功能,请在启动时将 "Y2GDB=1" 附加到内核命令行。

  • 在使用 Qt 时:X 服务器像往常一样在控制台 7 上启动,但会一直保持黑色,直到您手动启动 YaST。通过切换到控制台 1(在文本模式下使用 Ctrl+F2,在图形模式下使用 Ctrl+Alt+F2),gdb 正在运行。键入“run”以启动 YaST。切换回控制台 7 以查看 YaST 的 UI。
  • 在使用 ncurses 时:Gdb 在控制台 1 上启动。键入“run”以启动 YaST。切换到控制台 10 以查看 YaST 的 UI。

当 YaST 完成时,您必须在 gdb 中键入“quit”才能继续安装。

调试安装

有时您可能希望在安装客户端中添加更多调试输出,您需要在安装期间使用某些 debuginfo 包,或者您希望使用默认情况下不在 inst-sys 中的某些包。对于所有这些,您需要创建 自定义安装源。它对于测试补丁或新构建的 rpm 是否真正修复了安装中的错误,然后再使新包在官方介质上可用也很有用

在安装过程中打开 shell

通常在安装过程中打开 root shell 并发出一些调试命令很有用。从图形 YaST 安装,您可以使用 Ctrl+Alt+Shift+X 获取带有 root shell 的 X 终端。在硬件(非本地)控制台上,也可以切换到硬件控制台 2(在文本模式下使用 Ctrl+F2,在图形模式下使用 Ctrl+Alt+F2),其中存在 root shell。


参见