本地内核调试环境搭建,就这么简单!

简介: 本地内核调试环境搭建,就这么简单!

前言

内核调试默认是关闭的,需要手动开启。本文将简单介绍如何在 Vista 及后续版本的系统中开启本地内核调试,并简要介绍使用 windbg 连接内核的方法。在 xp 系统中,对应的设置保存在 boot.ini 中,感兴趣的小伙伴儿请自行搜索设置方法。

本地内核调试

windbg 不仅可以作为用户态调试器使用,还可以作为内核调试器使用。相较于命令行版本的 kd.exewindbg 更友好。在 windbg 中,通过菜单 File -> Kernel Debug (Ctrl + K) 可以打开内核调试设置界面,如下图:
windbg 本地内核调试界面

NETUSB1394COM 这四个选项是针对双机内核调试的,本文不涉及。Local 是本地内核调试用的,我们发现不用进行任何设置。点击 确定 按钮即可进行本地内核调试。

如果觉得上述操作太繁琐,我们可以以管理员权限运行 windbg.exe -kl 直接开启本地内核调试。

可能遇到的问题

我们可能遇到下面的错误提示:

Local kernel debugging requires Administrative
privileges, and is not supported by WOW64.
Only a single local kernel debugging session can run at a time.
Local kernel debugging is disabled by default. You must run 'bcdedit -debug on' and reboot to enable it.

具体错误提示如下图:

windbg 本地内核调试时遇到的错误提示

根据错误提示,我们可以知道进行本地内核调试需要注意以下几点:

  1. 本地内核调试需要管理员权限。
  2. 不支持 WOW64。如果是 64 位系统,必须使用 64 位的 windbg
  3. 同一时间只能建立一个本地内核调试会话。
  4. 本地内核调试默认是关闭的。需要通过 bcdedit /debug on 开启,重启生效。

通过命令行开启

按照提示,以管理员权限执行 bcdedit /debug on 。重启系统后,以管理员权限运行 windbg -kl 进行本地内核调试。如果顺利,我们就可以进行本地内核调试了。

windbg 本地内核调试

通过界面开启

我们也可以通过 msconfig 打开系统配置,在 引导高级选项 对话框中开启本地内核调试。具体设置过程请参考下图。
引导高级选项设置

关闭安全启动

以管理员权限执行 bcdedit /debug on,如果顺利,会有操作成功的提示,如下图。

开启本地内核调试

在某些机器的 win10 系统中,可能会遇到如下的提示。

开启本地内核调试失败

正如 微软官方文档 里介绍的那样:

Before using bcdedit to change boot information you may need to temporarily suspend Windows security features such as BitLocker and Secure Boot on the test PC. You can re-enable Secure Boot once you’re done debugging and you’ve disabled kernel debugging on the local computer.

在使用 bcdedit 更改启动信息之前,我们可能需要暂时关闭 Windows 的安全特性,比如 BitLocker 和安全启动。

我电脑上的安全启动选项是启用的,如下图:

安全启动开启状态

BIOS 里禁用安全启动后,重新执行 bcdedit /debug on 即可成功开启本地内核调试。

开启本地内核调试

bcdedit 用法简介

可以直接运行 bcdedit /? 查看帮助,通过 bcdedit /? command 查看每个命令的用法。

其实, bcdedit /debug on 的完整版是 bcdedit /debug [{ID}] { on | off },如果省略 {ID},默认取 {current}。如果想为其它系统设置,可以指定对应启动项的标识符。

  • 执行 bcdedit /enum [{ID}] 可以列出指定 ID 对应的启动项, 如不指定 ID 可以列出所有的启动项。

  • 执行 bcdedit /copy {ID} /d "description" 可以把当前的启动项复制一份。

  • 执行 bcdedit /delete {ID} 可以删除指定 ID 对应的启动项。

bcdedit 基本命令

本地内核调试的限制

在进行本地内核调试的时候,下面这些命令是不能执行的:

  • 执行命令,比如 g (Go)p (Step)t (Trace)wt (Trace and Watch Data)tb (Trace to Next Branch)gh (Go with Exception Handled)gn (Go with Exception Not Handled)
  • 关机和转储命令。比如,.crash.dump.reboot 等。
  • 断点命令。比如,b 系列命令。bpbubabcbdbebl等。
  • 寄存器显示命令。比如 r 系列命令。
  • 栈命令。比如,k 系列命令。

小知识

不知道大家平时是怎么截图的。是否用过键盘上的 PrtSc 键(一般在 F12 右侧)截图呢?也许有的小伙伴会问,截图键跟内核调试有什么关系?其实,在很多键盘上,PrtScSysRq 是同一个键。

键盘布局图-转自维基百科

当我们开启本地内核调试后,如果我们按 SysRq 键,系统会挂起。具体可以参考张老师的回帖。http://advdbg.org/forums/6537/ShowPost.aspx#6537。前几天访问高端调试论坛,发现挂了,今日终于能访问了,赶紧截图保存一份。

高端调试论坛相关帖子

SysRqLinux 下也有类似的作用,可以参考网址 https://www.ibm.com/developerworks/cn/linux/l-cn-sysrq/。

温馨提示:

一定要记住这个小知识。我被这个“虐”了很久。当年在公司机器上开启内核调试后,不知道这回事。在开发过程中需要截图,一按PrtSc 系统就挂起,一按 PrtSc 系统就挂起。害我重启了 N 次。说多了都是泪。

总结

  • bcdedit /debug on|off 可以开启(关闭)本地内核调试。

  • 如果开启本地内核调试失败,提示 该值受安全引导策略保护,无法进行修改或删除,可以在 BIOS 中关闭安全引导。

  • 运行 kd.exe -kl 或者 windbg.exe -kl 可以进行本地内核调试。

  • 本地内核调试需要管理员权限,如果遇到错误,请先检查权限。

  • bcdedit 的用法大家需要熟悉,在配置双机内核调试的时候还会用到。

本以为在本地内核调试的时候,可以很方便的保存一份转储文件,没想到居然不支持!如果有哪位小伙伴儿知道如何在本地内核调试的时候比较方便的保存一份系统转储文件,烦请告知。

参考资料

相关文章
|
5月前
|
Linux API 网络安全
OpenClaw从零到一落地:阿里云/本地部署、免费模型API配置、多Agent协同与问题全解
OpenClaw(曾用名Clawdbot)是2026年主流开源AI智能体框架,以本地优先、强任务执行、多Agent协同、工具生态完善为核心优势,可实现代码开发、内容创作、信息检索、自动化运营、项目管理等复杂任务,支持私有化部署、7×24小时稳定运行,兼容阿里云千问、Coding Plan免费编程模型等主流大模型服务,适配个人开发者、轻量化团队、自媒体运营等多种使用场景。本文基于2026年最新版本,完整覆盖阿里云云端部署、MacOS/Linux/Windows11本地安装、阿里云千问API与Coding Plan免费API对接、多Agent配置、服务启动验证及全场景常见问题解答,所有命令与配置均
726 5
|
Web App开发 弹性计算
阿里云ECS云服务器系统盘不够用怎么办?磁盘扩容功能了解一下
阿里云ECS云服务器默认搭配的是40G的系统盘,系统盘不够用怎么办?云服务器吧告诉大家ECS系统盘支持磁盘扩容更能,无需更换系统盘,一键扩容: ECS云服务器磁盘扩容 以前ECS云服务器系统盘不够用,是通过更换系统盘来实现的,更换系统盘时通过更换一个新的磁盘,选择一个镜像的方式来扩容,老的磁盘会被释放,十分麻烦。
15828 1
|
3月前
|
弹性计算 运维 云计算
阿里云服务器ECS是什么?一张图看懂ECS组成、使用场景、优势及功能详细介绍
阿里云ECS(弹性计算服务)是高性能、高可靠的IaaS云服务器,免采购硬件,即开即用、弹性伸缩。类比“租房”,阿里云代运维机房,用户按需租用、随时释放,降本增效。助力企业快速部署与业务扩展。云服务器ECS官网链接:https://t.aliyun.com/U/AZBUsA
240 3
|
4月前
|
弹性计算 人工智能 安全
CentOS停服别慌!阿里云Alibaba Cloud Linux免费替代方案来了
CentOS停服不用慌!阿里云自研Alibaba Cloud Linux免费替代方案上线,官网:https://t.aliyun.com/U/KReVDn 阿里云自研Linux 100%免费、十年长周期支持、深度适配ECS,兼容CentOS/RHEL生态,启动更快、性能更强、热补丁免重启,已广泛用于AI、大数据、容器等场景。
543 5
|
6月前
|
人工智能 自然语言处理 数据可视化
GitHub标星破万!程序员福音,82.5%准确率!这个开源项目重新定义了Text2SQL
DB-GPT 是开源AI原生数据应用框架,GitHub星标破万!支持自然语言查数据库(Text2SQL准确率82.5%)、RAG知识库、生成式BI、多智能体协作等,零代码实现数据对话、分析与可视化,赋能业务人员与开发者。
884 1
|
算法 数据处理 数据安全/隐私保护
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
1149 0
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
713 0
|
文字识别 API 开发工具
文字识别OCR常见问题之本地化部署如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
869 2

热门文章

最新文章