第三章 - 问题的解决方法并将必要的信息发送给卡巴斯基实验室的开发人员
在测试过程中产品/系统可能会崩溃或者故障。不要惊慌,如果问题发生的很突然,请您回忆问题发生前您的所有操作,比如改变或者安装什么程序或者设定。当描述问题时尝试回忆问题是如何发生的,或在此之前,您采取了什么措施来解决这个问题。
截图应该在论坛反馈中附带到帖子中。本节中描述的其他信息应该首先压缩存档。7-zip 是一个很好的工具。然后将压缩包作为附件发送到论坛。另外,您也可以将压缩包上传到 ownCloud(您可以使用 桌面客户端 来完成上传)或者从 https://cloud.qainfo.ru/直接上传。登录ownCloud 的用户名与密码是单独发送的,请联系 IIya Zadonsky 获得所需的登录凭证。请不要使用其他文件分享资源网站存储压缩包。
去相应的主题并详细描述问题情况。不要忘记指出测试产品的版本编号与 Windows 版本,包括 Service Pack 号码。附加您所收集到的信息或者指出文件名或者下载链接。在发送完信息后请等待 卡巴斯基实验室 代表或其他测试者的建议。
重要!| 收集的信息(日志(logs)和 内存转储(dumps))可能会为了保护用户数据而被加密保存。加密的文件会使用 ENC1 文件后缀拓展名。
重要!| 为了使 Windows 系统从 安全模式 启动,请在 Windows 开始启动前按 F8 键。对于 Windows 8 系统,请按 Shift+F8 组合键。
重要!| 如果产品运行缓慢或者使用许多内存的,这个现象主要是由于 应用程序验证器 或者 驱动程序验证器 导致。
关闭 应用程序验证器 或 驱动程序验证器
通常 应用程序验证器 与 驱动程序验证器 在测试版本中会被启用用来帮助解决可能的问题。如果您遇到性能问题请尝试关闭它们。为了这个目的,首先需要从 系统安全模式 启动 Windows 或者 另外禁用 自我保护 并且退出产品。若需对所做的更改生效,需要重启系统。
avp.exe
(服务进程)与
avpui.exe
(图形用户界面进程)如下注册表键值:
32位:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
64位:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
与
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
VerifyDriverLevel
与
VerifyDrivers
在注册表如下键值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\
KIS/KAV/KTS/KSOS
1. 追踪日志
如果启用追踪日志(可能在测试版本中默认已启用),产品会创建详细的日志文件,这些文件包含程序正在做的行为。请注意这些日志文件会非常大。建议仅在重现问题时启用它。如果记录已经启用,在重现问题前请先关闭它并且删除已存在的日志文件。此外,如果某些保护组件或后台程序不相关,您可以禁用/退出它们。
为了启用追踪日志,请打开产品主界面窗口并且点击底部的 “技术支持”链接并且在弹出的新窗口中点击“支持工具”链接。设置所需的追踪等级(通常时“推荐”等级)后点击 启用追踪 按钮,请重现问题,在问题重现后点击“禁用追踪”。生成的追踪文件会被保存在如下位置:
Windows XP:
C:\Documents and Settings\All Users\Application Data\Kaspersky Lab\
Windows Vista/7/8/10:
C:\ProgramData\Kaspersky Lab\
日志文件是文本文件并且使用如下命名规则:
KAV.[version][hotfix]_[date]_[time]_[process ID].[log type].log<.enc1>
例如:
KAV.17.0.0.225_03.16_17.13_2664.SRV.log
这些文件可能会被加密存储并且有一个附加拓展名 ENC1。
通过右击系统托盘中的 K 图标后选择“退出”选项退出产品。打包日志文件并且如前所述上传它们,之后不要忘记重新启动产品。
2. Process Monitor 日志
Process Monitor 是一个高级的 Windows 监控工具,它可以被用来实时监控文件系统、注册表与进程/线程的活动。
它可以从这里下载:
https://technet.microsoft.com/en-us/library/bb896645.aspx
1)以管理员权限运行 ProcMon.exe.
2)进入到 Filter > Enable Advanced Output。
3)然后隐藏 ProcMon 并且去重现问题。问题重现后,重新打开 ProcMon 并且停止记录 File > Capture Events。
4)保存记录结果依次选择“Events to save:” -> “All events”, “Format” -> “Native Process Monitor Format (PML)”,设置保存路径。
3. 卡巴斯基产品的内存转储文件
这些文件包含有关于产品完整的数据。在调查产品挂起或者崩溃时非常需要。
3.1. 卡巴斯基产品崩溃时写入的内存转储文件
如果产品崩溃,内存转储文件会自动生成。在这之后,产品会提示用户有关于崩溃事故并且显示在哪个位置写入了内存转储文件。请打开如下文件夹来找到文件:
Windows XP:
C:\Documents and Settings\All Users\Application Data\Kaspersky Lab\
Windows Vista/7/8/10:
C:\ProgramData\Kaspersky Lab\
内存转储文件有拓展名为 DMP 与使用如下命名规则:
KAV.[version][hotfix]_[date]_[time]_[process ID]_[dump type].[dump size].dmp<.enc1>
例如:
KAV.17.0.0.225_03.16_17.13_2664.GUI0.full.dmp
这些文件可能会被加密存储并且有一个附加拓展名 ENC1。
找到内存转储文件(通常会有三个成对),压缩它们并且如前所述上传它们。
3.2. 产品挂起时手动创建内存转储文件
- 使用特别工具“kavlog”:
http://support.kaspersky.com/general/dumps/8006
- 使用任务管理器(Windows Vista/7/8/10)
http://support.kaspersky.com/general/dumps/8158
- 使用 Windows 调试工具:查看以下章节
3.3. 使用 WinDbg 手动创建内存转储文件
下载Windows Software Development Kit:
Windows XP:
Microsoft Windows Software Development Kit (SDK) for Windows 7
Windows Vista/7/8/10:
Microsoft Windows Software Development Kit (SDK) for Windows 8.1
安装包包含一些开发 Windows 应用程序的工具。在安装期间仅需选择“Debugging Tools for Windows”,其它组件不是必须的。有两个版本的调试器(debugger),一个针对32位系统,一个争对64位系统。针对您所使用的操作系统架构(x86或x64)使用正确的版本。
3.3.1. 如果任意应用程序崩溃,该如何创建内存转储文件
在您已经安装完调试工具后,您可以定义 WinDbg 作为您的默认调试器。WinDbg 应当在任意一个应用程序崩溃后自动启动并且您可以创建一个进程的内存转储。
1)以管理员权限启动命令提示符。
2)进入到 WinDbg 目录,例如:
32位:
cd C:\Program Files\Windows Kits\8.1\Debuggers\x86
64位:
cd C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64
Windbg.exe的路径取决于安装的SDK版本,请相应地进行调整。
3)携带 -I 参数启动 WinDbg:
windbg.exe -I
如果一切操作正确,会有一个说明 WinDbg 已成功设置为默认调试器的消息。
现在请重现问题。在应用程序崩溃,WinDbg应该会自动启动。输入如下命令(在路径中插入您的用户名)
Windows XP:
.dump -ma C:\Documents and Settings\<Username>\Desktop\KIS.dmp
Windows Vista/7/8/10:
.dump -ma C:\Users\<Username>\Desktop\KIS.dmp
请注意命令以 英文句号 开始。
-ma选项将会使 WinDbg 创建一个完整内存转储,尽管WinDbg会报告创建的是minidump。接下来的命令是内存转储文件保存的位置。内存转储文件名可以任意但是所指定的文件夹必须存在且可写入文件。在以上例子中内存转储文件将会被创建在桌面上。
如果您不再想要将 WinDbg 设定成为默认调试器:
Windows XP:以管理员权限运行命令提示符并且输入命令
drwtsn32 -i
Windows Vista/7/8/10:保存如下文本为 reg 文件,右击它并且选择“合并”:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"=-
"Debugger"=-
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"=-"Debugger"=-
3.3.2.如果卡巴斯基产品或者任意应用程序挂起,如何创建内存转储文件
当一个进程挂起,您可以通过以下方式获得内存转储:
1)以管理员权限启动 WinDbg。
2)在 “File”下拉菜单中选择 “Attach to a Process”或者按 F6 键。
3)选择进程并且单击“OK”。
4)输入如下命令(在路径中插入您的用户名):
Windows XP:
.dump -ma C:\Documents and Settings\<Username>\Desktop\KIS.dmp
Windows Vista/7/8/10:
.dump -ma C:\Users\<Username>\Desktop\KIS.dmp
您可以在桌面上设置一个快捷方式,在快捷方式的属性中,您可以选择以管理员权限启动。请注意命令以 英文句号 开始。
-ma选项将会使 WinDbg 创建一个完整内存转储,尽管WinDbg会报告创建的是minidump。接下来的命令是内存转储文件保存的位置。内存转储文件名可以任意但是所指定的文件夹必须存在且可写入文件。在以上例子中内存转储文件将会被创建在桌面上。
4. Windows 内存转储文件
这些文件包含在系统崩溃时完整的系统内存数据。
您需要在这里找到这个文件
C:\Windows\MEMORY.DMP
压缩打包它并且如前所述上传它们。请确认所提供的内存转储是系统崩溃时产生的。
默认情况下 Windows 创建 minidumps但是它们不包含足够的信息用来分析问题,一个完整的内存转储是必需的。可能需要更改一些设置,以便在崩溃时启用创建内存转储。还要确保转储文件的路径被设置为
%SystemRoot%\MEMORY.DMP
并且“覆盖已存在的文件”选项是启用的。根据Windows版本的不同,相应设置的位置也有所不同:
Windows XP:
1)右击桌面上的“我的电脑”
2)选择“属性”
3)选择“高级”标签
4)点击“启动和恢复”框中的“设置”
Windows Vista/7/8/10:
1)右击桌面上的“计算机”
2)选择“属性”
3)点击左边栏的“高级系统设置”
4)点击“启动和恢复”框中的“设置”
重要!| 在某些情况下,系统不会创建完整的内存转储。如果计算机的RAM超过2gb,可用磁盘空间小于内存大小,或者交换文件不在系统驱动器上,或者被完全禁用,就会发生这种情况。在这种情况下,可用内存可以手动限制。
在开始菜单中点击“运行”,输入“msconfig”。然后切换到选项卡“Boot”或“Boot”。这取决于Windows版本。点击“高级选项”,启用“最大内存”,并在相应字段中指定一个值。在Windows XP中,该选项的名称是“MAXMEM”。更改将在重新启动后生效,详情请看
http://support.kaspersky.com/general/dumps/7989
4.1. Windows崩溃时写入内存转储文件
如果Windows崩溃,则自动创建内存转储文件。以上说明均适用。
4.2. 手动创建内存转储文件
有两种方法手动创建内存转储文件:
1. 插入如下注册表键值:
PS/2键盘:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"CrashOnCtrlScroll"=dword:00000001
USB键盘:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters]
"CrashOnCtrlScroll"=dword:00000001
Windows XP: http://support.kaspersky.com/general/dumps/8003
Windows Vista/7/8/10: http://support.kaspersky.com/general/dumps/2142
为了引起一个BSOD,保持按住键盘右下角的 Ctrl 键然后按两下 Scroll 键。
您可以在如下知识库文章中找到详细的说明:
Windows XP: http://support.kaspersky.com/general/dumps/8003
Windows Vista/7/8/10: http://support.kaspersky.com/general/dumps/2142
有一个工具 StartBlueScreen可以用来引起32位系统BSOD。
以管理员权限启动此工具:
StartBlueScreen.exe 0 0 0 0 0
可以指定其他数字,而不是0。它们只设置BSOD上显示的错误数和错误参数。
注意,该实用程序不是意外启动的。
5. 安装/卸载日志文件
调试和修复安装或删除产品时发生的问题需要日志文件。您可以阅读这篇知识库文章:
http://support.kaspersky.com/general/dumps/2042
打包这些文件并将它们附加到论坛中的帖子中。大多数日志都是在临时文件夹中创建的,您可以在这里找到:
Windows XP:
C:\Documents and Settings\<Username>\Local Settings\Temp
Windows Vista/7/8/10:
C:\Users\<Username>\AppData\Local\Temp
在安装后您可以找到如下文件:
Temp 文件夹(或许会被加密保存并且有附加拓展名 ENC1):
- kl-install-yyyy-mm-dd-hh-mm-ss.log<.enc1>
- kl-setup-yyyy-mm-dd-hh-mm-ss.log<.enc1>
- kl-preinstall-yyyy-mm-dd-hh-mm-ss.log<.enc1>
其他文件:
Windows XP:
C:\Windows\setupapi.log
Windows Vista/7/8/10:
C:\Windows\inf\setupapi.app.log
与
C:\Windows\inf\setupapi.dev.log
在删除一个具有唯一名称MSI*.log的日志时,将在temp文件夹中创建一个日志。如果有几个日志文件具有这样的名称,那么为了找到必要的日志,请查找具有最新创建日期/时间的日志。
6. GetSystemInfo报告
GetSystemInfo (GSI)是一个特殊的实用程序,用于收集关于系统、安装在其上的驱动程序和应用程序、运行进程等信息。禁用产品的自我保护功能并使用管理员权限启动实用程序。报告完成后,不要忘记重新启用自我保护功能。将GSI报告存档并将其附加到论坛中的帖子中。
您可以在这篇知识库文章中找到详细的说明:
http://support.kaspersky.com/general/dumps/3632
7. 屏幕截屏
截屏是计算机为记录显示器上显示的可见项而拍摄的图像文件。请不要使用第三方资源,并将截图直接附加到帖子中。
要在Windows XP下截屏,请遵循这篇知识库文章中的说明:
http://support.kaspersky.com/general/various/492
在Windows Vista以上系统上截图,有一个特殊的工具叫做“Snipping Tool”:
http://windows.microsoft.com/en-us/windows...re-screen-shots
救援盘 2010
您可以在以下知识库文章中找到详细的描述:
- 硬件信息:
http://support.kaspersky.com/4124
- 追踪日志:
http://support.kaspersky.com/4153
恢复工具(KTS的一部分)
日志文件生成在
%TEMP%\KLRT
为了在发行版本中启用日志,请编辑
kasperskylab.pure.restoretool.exe.config
- 它应该在此工具相同的文件夹内:
32位:
C:\Program Files\Kaspersky Lab\Kaspersky Total Security x.y.z\Kaspersky Restore Utility\
64位:
C:\Program Files (x86)\Kaspersky Lab\Kaspersky Total Security x.y.z\Kaspersky Restore Utility\
在
</startup>
之后您需要添加:
<appSettings>
<add key="EnableTraces" value="true"/>
</appSettings>