Windbg PReview怎么分析出上上次以及更早的蓝屏记录?

Windbg PReview怎么分析出上次,上上次以及更早的蓝屏记录?

minidump小内存转储的话每次蓝屏都会生成一个dmp文件,你用windbg打开那个时间的dmp文件分析就行了。
完整或核心内存转储只有一个,每次蓝屏都会覆盖前一个。

【以下回答由 GPT 生成】

解决方案

要使用Windbg PReview工具来分析最近一次、上一次以及更早的蓝屏记录,并查找特定的错误信息,可以采用以下步骤:

  1. 安装Windbg PReview:
  2. 前往 Windows Insider Preview 网站,选择一个适用于你的操作系统的预览版。
  3. 下载并安装该预览版。
  4. 在设置中开启"Windows内部预览体验程序"选项。

  5. 配置Windbg PReview:

  6. 运行Windbg PReview。
  7. 在"文件"菜单中选择"符号文件路径"选项,添加符号文件路径。例如,可以添加Microsoft的符号服务器路径:https://msdl.microsoft.com/download/symbols
  8. 在"文件"菜单中选择"保存工作区"选项,保存当前的工作区设置。

  9. 使用Python脚本自动化分析:

  10. 安装Python的pykd库(Windows调试工具包的Python绑定)。 python pip install pykd

  11. 编写Python脚本来自动化Windbg PReview工具的操作。下面是一个示例的Python脚本,用于分析最近一次、上一次以及更早的蓝屏记录: ```python import os import subprocess

    def analyze_latest_crash(): # 获取最近一次蓝屏记录的文件路径 dump_file = get_latest_crash_dump()

     # 分析蓝屏记录
     analyze_dump_file(dump_file)
    

    def analyze_previous_crash(): # 获取上一次蓝屏记录的文件路径 dump_file = get_previous_crash_dump()

     # 分析蓝屏记录
     analyze_dump_file(dump_file)
    

    def analyze_earlier_crash(): # 获取更早的蓝屏记录的文件路径 dump_file = get_earlier_crash_dump()

     # 分析蓝屏记录
     analyze_dump_file(dump_file)
    

    def get_latest_crash_dump(): # 通过Windbg PReview工具获取最近一次蓝屏记录的文件路径 output = run_windbg_command("!analyze -v")

     for line in output.splitlines():
         if line.startswith("DUMP_FILE:"):
             return line.split(":")[1].strip()
    

    def get_previous_crash_dump(): # 通过Windbg PReview工具获取上一次蓝屏记录的文件路径 output = run_windbg_command("!analyze -v")

     # 解析输出获取上一次蓝屏记录的文件路径
     # ...
    

    def get_earlier_crash_dump(): # 通过Windbg PReview工具获取更早的蓝屏记录的文件路径 output = run_windbg_command("!analyze -v")

     # 解析输出获取更早的蓝屏记录的文件路径
     # ...
    

    def analyze_dump_file(dump_file): # 分析蓝屏记录文件 output = run_windbg_command("!analyze -v -hang -p {}".format(dump_file))

     # 查找特定的错误信息
     # ...
    

    def run_windbg_command(command): # 运行Windbg PReview命令,并获取输出 windbg_path = "C:\Program Files\Windows Kits\10\Debuggers\x64\windbg.exe" output = subprocess.check_output([windbg_path, "-z", "crash.dmp", "-c", command]).decode() return output

    if name == "main": analyze_latest_crash() ``` 请注意,上述示例中的脚本仅展示了一个简单的框架,具体的解析逻辑需要根据Windbg PReview的输出格式进行编写。

  12. 运行Python脚本来自动化分析:

  13. 将蓝屏记录文件(Dump文件)放入与Python脚本相同的目录中,并将文件名命名为"crash.dmp"。
  14. 运行Python脚本来自动化分析蓝屏记录。 bash python analyze_crash.py

这样,通过以上的步骤,你可以使用Windbg PReview工具来分析最近一次、上一次以及更早的蓝屏记录,并查找特定的错误信息。这个过程也可以通过编写Python脚本来自动化执行。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

🟢参考GPT:


要分析Windbg PReview中的蓝屏记录,您可以按照以下步骤进行操作:

首先,打开Windbg PReview工具。

在Windbg PReview的命令行中输入”!analyze -v”命令,然后按下回车键。这将分析当前蓝屏记录并提供详细的错误信息和故障代码。

要查看上次的蓝屏记录,您可以使用Windbg PReview的”!analyze -lastevent”命令。这将显示最近一次发生的蓝屏记录的详细信息。

要查看上上次的蓝屏记录,您可以使用Windbg PReview的”!analyze -lastevent -2”命令。这将显示倒数第二次发生的蓝屏记录的详细信息。

要查看更早的蓝屏记录,您可以使用Windbg PReview的”!analyze -lastevent -n”命令,其中n是一个数字,表示要查看的蓝屏记录的索引。例如,”!analyze -lastevent -3”将显示倒数第三次发生的蓝屏记录的详细信息。

请注意,以上命令只适用于Windbg PReview工具,如果您使用的是其他版本的Windbg,命令可能会有所不同

参考GPT:
Windbg PReview(Problem Reports Preview)是Windows操作系统中的一个工具,用于查看和分析系统的问题报告,包括蓝屏错误报告(也称为崩溃转储)。通过PReview,您可以查看系统最近的蓝屏记录以及以前的错误报告。

要查看上次,上上次以及更早的蓝屏记录,您可以按照以下步骤进行操作:

  1. 打开PReview:在Windows操作系统中,您可以按下Win + R键组合打开“运行”对话框,然后输入perfmon /rel并按Enter键来打开PReview。

  2. 查看蓝屏记录:在PReview窗口中,您会看到一个列表,其中包含了系统最近的问题报告,包括蓝屏错误报告。问题报告会按照时间顺序列出,最新的记录在最上面。

  3. 查看更早的蓝屏记录:如果您想查看更早的蓝屏记录,可以向下滚动列表,按时间顺序查看过去的问题报告。通常,较旧的蓝屏记录将在列表的底部。

  4. 查看详细信息:您可以选择特定的蓝屏记录,然后点击“查看技术详细信息”链接来查看该问题报告的详细信息。这将打开包含错误代码、错误描述和可能的解决方案的详细视图。

请注意,PReview只能查看系统中已经生成的问题报告。如果系统没有记录特定时间段内的蓝屏错误,可能是因为问题报告功能没有启用,或者蓝屏错误转储文件被删除或覆盖。

对于更深入的蓝屏错误分析,您可以使用Windows的“事件查看器”(Event Viewer)来查看系统日志,其中包含更详细的系统事件和错误信息。在Event Viewer中,您可以找到系统的应用程序和系统日志,其中记录了各种事件和错误信息,包括蓝屏错误的详细信息。

援引GPT回答:
要分析上次、上上次以及更早的蓝屏记录,可以按照以下步骤进行:

  1. 打开Windbg Preview,选择"File" -> "Open Crash Dump",然后选择最新的蓝屏dump文件,点击"Open"。
  2. 在Windbg的命令行中输入"!analyze -v"命令,以分析当前的蓝屏记录。
  3. 在分析完当前蓝屏记录后,输入".lastevent"命令,可以得到上一次的蓝屏记录的地址。
  4. 输入"!analyze -v -hang"命令,以分析上一次的蓝屏记录。
  5. 输入"!analyze -v -hang -prev"命令,可以得到上上次的蓝屏记录的地址。
  6. 输入"!analyze -v -hang -prev"命令,以分析上上次的蓝屏记录。
  7. 重复步骤5和6,可以分析更早的蓝屏记录。

注意:在分析蓝屏记录时,可能需要下载符号文件,以便正确解析堆栈信息。可以通过设置符号路径来下载符号文件。

minidump小内存转储的话每次蓝屏都会生成一个dmp文件,你用windbg打开那个时间的dmp文件分析就行了。

打开WinDbg程序。在程序窗口的"File"菜单下选择"Open Crash Dump",打开位于系统盘的minidump文件夹下的以日期为文件名的.dmp文件。如果只有一个日期的文件,可能就是被覆盖了。不然应该就可以的。

试试命令

```
!analyze -v

```查找并分析上次蓝屏记录

分析对应的dmp文件即可

按照生成时间,分析相应的dmp文件

哈喽,提供一个实例的方法,你可尝试看下面的步骤:
首先,打开WinDbg程序。在开始菜单中,找到“Debugging tools for Windows (x86)”文件夹,打开其中的“WinDbg”程序。
其次,在WinDbg程序界面中,点击“File”菜单,然后选择“Open Crash Dump”选项。
接着,在弹出的对话框中,找到系统盘的minidump文件夹,该文件夹通常位于C:\Windows\Minidump。在minidump文件夹下,可以看到以日期为文件名的.dmp文件,这些文件就是之前的蓝屏记录。
最后,选择要分析的.dmp文件,点击“Open”按钮打开。WinDbg会开始分析.dmp文件,并显示出分析结果。在WinDbg界面的最下面,可以找到“Probably caused by”这一行,其后面的文件就是引起蓝屏的原因。

要分析上次、上上次以及更早的蓝屏记录,可以使用Windbg Preview的命令行工具kd命令来完成。

以下是一些步骤:

  1. 打开Windbg Preview命令行工具。

  2. 使用以下命令加载最新的蓝屏转储文件(.dmp文件):

    kd -z C:\路径\转储文件.dmp
    
  3. 使用以下命令分析转储文件并查看蓝屏信息:

    !analyze -v
    

    这将显示转储文件中的蓝屏信息,包括错误代码、错误描述和可能的原因。

  4. 如果要查看上次的蓝屏记录,可以使用以下命令:

    .lastevent
    

    这将显示上次蓝屏的详细信息,包括时间戳、错误代码和错误描述。

  5. 如果要查看上上次或更早的蓝屏记录,可以使用以下命令:

    .lastevent -prev
    

    这将显示上上次蓝屏的详细信息。

    可以使用 -prev 参数多次调用 .lastevent 命令来查看更早的蓝屏记录。

通过这些步骤,您可以使用Windbg Preview分析上次、上上次以及更早的蓝屏记录。请注意,您需要拥有相应的转储文件才能执行这些操作。

在物联网应用场景中,常常需要对多个设备进行数据订阅,并对这些数据进行处理和展示。而在实际应用中,不同的设备可能会按照不同的时间、频率和顺序上传数据,因此对于订阅的设备数据上传顺序的控制显得尤为重要。

在C#中,可以使用MQTT(Message Queuing Telemetry Transport)协议进行订阅设备数据。MQTT是一种轻量级的消息传输协议,适用于低带宽、高延迟和不稳定网络环境下的设备间通信。在使用MQTT进行设备数据订阅时,常常需要将订阅的数据存储在消息队列中,在接收到数据后进行处理。

在订阅多个设备数据时,可以将每个设备的数据存储在不同的消息队列中,并使用优先级队列来控制数据上传的顺序。优先级队列是一种特殊的队列,可以根据元素的优先级进行排序和访问。可以将较高优先级的数据放在队列的前面,以保证优先处理这些数据。

C#中的优先级队列可以使用PriorityQueue库进行实现。可以定义一个消息队列数组,每个消息队列存储一种类型的设备数据。在接收到设备数据时,可以根据设备类型将数据加入到相应的消息队列中,并使用优先级队列对消息队列进行排序。优先级队列中的优先级可以根据设备上传数据的时间、重要性和其他因素进行设置。

以下是一个基于C#的多设备订阅和数据上传顺序控制的示例代码:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using PriorityQueue;

class Program
{
    static async Task Main(string[] args)
    {
        // 初始化消息队列数组及优先级队列
        var queues = new List<PriorityQueue<string>>();
        for (int i = 0; i < 5; i++)
        {
            queues.Add(new PriorityQueue<string>());
        }

        // MQTT连接设置
        var options = new MqttClientOptionsBuilder()
            .WithTcpServer("localhost")
            .WithClientId("client1")
            .Build();

        var factory = new MqttFactory();
        var client = factory.CreateMqttClient();

        // 连接MQTT服务器
        await client.ConnectAsync(options);

        // 订阅设备数据
        await client.SubscribeAsync(new List<MqttTopicFilter> {
            new MqttTopicFilterBuilder().WithTopic("device/+/data").Build()
        });

        // 处理接收到的设备数据
        client.UseApplicationMessageReceivedHandler(e =>
        {
            var topic = e.ApplicationMessage.Topic.Split('/');
            var deviceType = int.Parse(topic[1]);
            var data = e.ApplicationMessage.ConvertPayloadToString();

            queues[deviceType].Enqueue(data);
        });

        // 按照上传时间处理优先级队列中的消息
        while (true)
        {
            for (int i = 0; i < queues.Count; i++)
            {
                if (queues[i].Count > 0)
                {
                    var data = queues[i].Dequeue();
                    Console.WriteLine($"Device {i} Data: {data}");
                }
            }

            await Task.Delay(100);
        }
    }
}

在该示例代码中,使用了一个长度为5的消息队列数组来存储5种类型的设备数据。在接收到设备数据时,根据设备类型将数据加入到相应的消息队列中,并使用优先级队列对消息队列按照上传时间进行排序。在处理消息队列时,按照上传时间从优先级队列中取出数据进行处理。

总的来说,在C#中控制多设备订阅数据上传顺序的方法是通过定义多个消息队列,并使用优先级队列对消息队列进行排序来实现的。这种方法可以很好地保证不同设备上传数据的顺序和处理的优先级,为物联网应用提供了有力的支持。

在Windbg Preview中,可以使用以下命令来分析上次,上上次以及更早的蓝屏记录:

  1. 查看最后一次蓝屏记录:

    !analyze -v
    
  2. 查看上一次蓝屏记录:

    !analyze -last
    
  3. 查看更早的蓝屏记录:

    !analyze -previous
    

    如果要查看更早的记录,可以使用以下命令:

    !analyze -previous -previous
    

    以此类推,每次添加一个 -previous 参数来查看更早的记录。

注意:Windbg Preview只能分析保存在本地磁盘上的蓝屏记录,如果之前的记录已被清除或覆盖,就无法使用Windbg Preview来分析。

查看电脑蓝屏记录的方法


1、查看Windows系统日志

在Windows系统中,可以通过查看事件日志来获取系统发生错误或故障的详细信息,包括蓝屏错误信息。按下以下快捷键:Win+R,输入eventvwr.msc,点击确定,打开事件查看器。

然后,在左侧面板中,展开“Windows日志”,找到“系统”日志,可以看到系统的各种事件记录,包括蓝屏记录。蓝屏信息记录在每一次发生蓝屏错误的事件中,点击事件即可查看。

2、使用“蓝屏查看器”小工具

“蓝屏查看器”是一款免费的小工具,可以帮助用户更方便地查看蓝屏错误记录。它可以根据Dump文件,读取和分析系统蓝屏错误的相关信息。

用户可以从官网下载后安装,打开软件即可看到相关蓝屏错误信息。

3、分析Minidump文件

Minidump文件是记录蓝屏错误信息的一种文件格式。Windows系统崩溃时,会自动生成这种文件。查看Minidump文件需要一些专业知识,在此不再赘述,用户可以通过网络搜索相关教程,获得详细的操作方法。

4、使用系统诊断工具

Windows系统自带一个诊断工具,可以在一定程度上帮助用户检测和修复蓝屏错误。按下以下快捷键:Win+R,输入mdsched.exe,点击确定,打开内存诊断工具。

选择“立即重启计算机并进行检查”或“选择检查是否存在内存问题”,然后系统就会开始进行内存检查。如有问题,将有显示结果。