0

我正在运行 Windows 7,我想在其上进行内核调试,并且不想弄乱引导加载程序。所以我已经按照这里的建议下载了 LiveKd并让它运行,看起来它正在工作。如果我理解正确,那是某种只读调试。这里提到它非常有限,甚至不能使用断点。我想问一下在这种模式下是否可以定期转储所有正在执行的指令或基本上所有在当前操作系统上发生的事件?我想有一些系统范围的 strace(Linux 用户知道)并对此进行一些统计分析。我想这取决于更多的因素,比如安装的调试符号开始能够解析地址等。

4

1 回答 1

1

我不确定调试器是否是可用于跟踪实时系统调用的最佳工具。正如您所提到的,LiveKd 会话非常有限,您不能在其中放置断点(否则您会挂起自己的系统)。但是,您仍然可以使用命令创建内存转储.dump(查看 windbg 帮助:).hh .dump。请记住,获取/f正在运行的系统的完整转储 ( ) 可能需要很长时间。

回到您的问题的主题,通过使用“转储方法”,您将错过许多系统调用,因为您将只有给定时间点的系统快照。因此,如果您正在寻找类似于 Linux 的东西,strace我建议您检查这些工具:

  • Process Monitor (procmon) - 它是一个工具,可以显示系统中的所有 I/O 请求,以及对注册表或进程活动事件执行的操作
  • Windows Performance Toolkit - 它包含用于收集 (WPR) 和分析 (WPA) 系统和应用程序跟踪事件的工具。可能会有很多事件,根据您的需要过滤它们非常重要。ETW(Windows 事件跟踪)是一个庞大的主题,您可能需要阅读一些教程或书籍才能有效地使用它(但这真的很值得!)。
  • API Monitor - 它是众多(我认为它是最好的)跟踪应用程序之一 - 这个工具将允许您跟踪任何正在运行的进程中的方法调用。它有一个很好的界面,甚至允许您在要拦截的方法上放置断点。

还有许多其他工具可用于在 Windows 上进行跟踪,但我将从上面列出的那些开始。您还可以查看一本关于此主题的好书:Inside Windows Debugging。祝你好运!:)

于 2015-05-07T19:31:50.837 回答