使用 Logger.exe

激活 Logger 的一种方法是运行独立Logger.exe程序。 这实质上是一个非常小的调试器,只能获取单个目标。 若要运行它,请在命令行中包含目标应用程序的名称:

logger Target 

激活后,它将加载指定的应用程序,并将代码插入目标应用程序,该代码将跳到加载和初始化目标应用程序进程中Logexts.dll的例程。 这称为“将记录器注入目标应用程序”。

Logger.exe实用工具和Logexts.dll模块是此记录器车辆的两个组件。 它们通过内存的共享部分进行通信,其中包括输出文件句柄、当前类别掩码和指向日志输出缓冲区的指针。

将显示一个标题为 Logger (调试器) 的窗口。 此窗口将显示记录器进度。

“更改设置”对话框

初始化完成并完成初始显示后,将显示 “更改设置” 对话框。 这样,就可以配置记录器设置。 此处介绍了各种设置:

API 设置
此列表显示可用的 API 类别。 将记录突出显示的类别:未突出显示的类别不会。 首次运行记录器时,将突出显示所有类别。 但是,在后续的运行中,记录器将跟踪为给定目标应用程序选择的类别。

如果禁用某个类别,则将删除该类别中所有 API 的挂钩,以便不再有任何性能开销。 不会删除 COM 挂钩,因为无法随时重新启用它们。

仅当仅对程序与 Windows 进行的特定类型的交互(例如文件操作)感兴趣时,仅启用某些类别会很有用。 这可减小日志文件大小,并降低记录器对进程执行速度的影响。

测 井
本部分包含 “启用” 和“ 禁用 ”单选按钮。 禁用日志记录将导致删除所有 API 挂钩,以允许程序自由运行。 不会删除 COM 挂钩,因为无法随时重新启用它们。

包含/排除列表
本部分控制模块包含/排除列表。 通常最好只记录从特定模块或模块集进行的那些函数调用。 为了方便实现此目标,Logger 允许指定模块包含列表,或者指定模块排除列表。 例如,如果只想记录来自一个或两个模块的调用,则使用包含列表。 如果要记录除模块的简短列表之外的所有模块发出的调用,可以使用排除列表。 始终排除Logexts.dll和Kernel32.dll的模块,因为不允许记录器自行记录。

刷新缓冲区
此按钮将刷新当前输出缓冲区。 作为性能考虑,仅当输出缓冲区已满时,日志输出才会刷新到磁盘。 默认情况下,缓冲区为 2144 字节。

由于缓冲区内存由目标应用程序管理,因此,如果目标应用程序中存在访问冲突或其他一些不可恢复的错误,则不会自动将缓冲区写入磁盘上的日志文件。 在这种情况下,应尝试激活目标应用程序的窗口并按 F12 获取此对话框,然后按 刷新缓冲区。 如果未执行此操作,则最近记录的函数可能不会显示在日志文件中。


这会导致目标应用程序开始执行。

运行目标应用程序

选择设置后,选择“ 转到”。 对话框将关闭,目标应用程序将开始运行。

如果使目标应用程序的窗口处于活动状态并按 F12,它将进入 Logger。 这将导致目标应用程序冻结,并重新显示 “更改设置” 对话框。 可以根据需要更改设置,然后按 Go 继续执行。

可以根据需要让目标应用程序运行一段时间。 如果它正常终止或由于错误,日志记录将停止,并且无法重新启动。

如果要退出,请选择“ 文件|退出 并选择“ ”。 如果目标应用程序仍在运行,它将终止。

Logger.exe的限制

通过 Logger.exe 工具运行 Logger 时,它将仅创建一个输出文件 - 一个 .lgv 文件。 不会写入任何文本文件。 但是,将创建一个大小为零的.txt文件;这可能会覆盖以前由调试器写入的文本日志。

输出文件将始终放置在桌面的 LogExts 子目录中;无法更改此位置。

如果通过调试器运行记录器并Logexts.dll,则这些限制将不适用。