我正在运行Windows 7,我想在其上进行内核调试,我不想搞乱启动加载程序。所以我按照建议的here下载了LiveKd并使其运行,似乎它正在运行。如果我理解正确,它是某种只读调试。提到Here它非常有限,甚至不能使用断点。我想问一下,在这种模式下是否可以定期转储正在执行的所有指令或基本上所有当前操作系统上发生的事件?我想有一些系统范围的strace(Linux用户知道)并对此进行一些统计分析。我想这取决于更多因素,如已安装的调试符号,以便能够开始解析地址等。
答案 0 :(得分:1)
我不确定调试器是否是可用于跟踪实时系统调用的最佳工具。正如您所提到的,LiveKd会话非常有限,并且您不允许在其中放置断点(否则您将挂起自己的系统)。但是,您仍然可以使用.dump
命令创建内存转储(请检查windbg help:.hh .dump
)。请记住,获得正在运行的系统的完全转储(/f
)可能需要花费很多时间。
回到问题的主题,使用"转储方法"您将错过许多系统调用,因为您将只在给定时间点拥有系统快照。因此,如果您正在寻找类似于Linux strace
的内容,我建议您检查这些工具:
还有许多其他工具可用于在Windows上进行跟踪,但我会从上面列出的那些工具开始。你也可以查看一本关于这个主题的好书:Inside Windows Debugging。祝好运! :)