概述
1 背景
Windows的启动的早期阶段,大致分为3步:bootmgr,winload,nt内核加载。
下图是Winload阶段的一个报错。
如果出现Windowslogo,一般就是进入nt内核加载了。
我们经常开的调试功能是nt内核加载后的调试。无法调试winload。
如果故障环境,无法正常进入Windows,甚至连安全模式都进入不了,那么试图开启Windows调试就不知所措了。
2 原理
参阅BCDEdit /bootdebug。
在以下示例中,命令启用 Windows 启动管理器、启动加载程序调试,然后对操作系统进行内核调试。 这种组合允许在每个启动阶段进行调试。 如果使用此组合,则目标计算机将进入调试器三次:加载 Windows 启动管理器时、启动加载程序加载时以及操作系统启动时。
bcdedit /bootdebug {bootmgr} on
bcdedit /bootdebug on
bcdedit /debug on
随后用bcdedit /dbgsettings
可以对全局的调试参数做配置,例如串口调试
bcdedit /dbgsettings serial debugport:1 baudrate:115200
对于MBR分区硬盘,这些配置栏目实际上是保存在BCD文件中。
从diskmgmt.msc可以找到活动分区,有时候是C盘,有时候是C盘前面的一小块分区。这里面的根目录的** BootBCD ** 文件就是记载了里面这三条调试参数。
3 方法
3.1 单独编辑BCD法
一般推荐在windows pe操作系统下去访问故障windows所在的整个硬盘,找出bcd文件,用bootice编辑之。
对于初始的设置,Win10处是这样:
例如此例,winload处只有一个启动项——Windows 10,GUID是{3610…cf-72c0…}。
若已开启nt内核调试,则在高级编辑中,Windows 10处多了一个KernelDebuggerEnabled=True
我们若给初始的bcd文件也添加此项,也可达成nt debug的功能。
3.2 cmd编辑法
进入Windows恢复环境里有个命令行选项,进入之,执行bcdedit命令。
对于内核调试不能直接写
bcdedit /debug on
因为只是调试当前的windows恢复环境。
要写
bcdedit /debug {default} on
或
bcdedit /debug {GUID} on
才是调试出问题的Windows。
最后
以上就是暴躁红牛为你收集整理的无法正常进入Windows也能开启Windows内核调试1 背景2 原理3 方法的全部内容,希望文章能够帮你解决无法正常进入Windows也能开启Windows内核调试1 背景2 原理3 方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复