前言:
驱动开发和内核需要双机调试。 PC和win笔记本的结合只需要一台虚拟机就可以调试,而且网上教程也很多。
由于macos无法安装,所以需要准备两台虚拟机,一台调试机(安装)和一台被调试机(运行驱动)。
然而,如何通过串口链接两个虚拟机就成了一个问题。
注:被调试机的串口配置为调试机的串口配置(pd不同,如果连接不上则相反设置)
环境配置:
win7 被调试机
win10 调试机 (有windbg)
让我提前告诉你
启动顺序
启动调试机并连接串口
调试好的机器启动
结束序列。
必须是g,运行时不能停在断点处(被调试机器的鼠标必须能操作)
辞职
调试器关闭机器
否则,调试器将无法关闭机器(一直在转圈),只能在任务管理器中结束该vm的所有进程。
如果要恢复快照,谁先启动调试器并不重要。
1.添加串口下的双机调试
2、新的名字是com1(随便命名吧,反正PC配置的时候就是这个名字)
3. 选择串口模式
调试机选型:客户端
调试机器选择:服务器
(调试机服务器;;;;;调试机:客户端也可以断开连接……)
插曲:因为手速太快,我把调试机恢复到了快照。 什么驱动环境、vs环境等等都没有了。 那么调试机的串口com1的客户端被占用,但是com1的服务器串口可以使用。 然后将被调试机的串口改为客户端,也可以调试了。 这太神奇了。
最开始: 调试机=com1客户端 被调试机=com1服务端 , 能调windbg能断下来
================================================================================
手残恢复调试机快照之后 : 调试机=com1服务端 被调试机=com1客户端 , 也能断下来 可以调试
4. 配置客户端。
开机后,以管理员身份打开cmd,执行以下两条命令:
bcdedit /copy {current} /d "MyOS"
bcdedit /debug ON
执行完成后输入win+r查看全局调试是否为com1。
然后关闭
5.调试机器配置
6、调试好的机器开机时(win7、win10)会出现引导访问并回车(第一次开机会很慢)
7、调试机会显示连接成功。
然后点击break,就会中断到内核(中断后先拍个快照),就可以调试了。
8、内核断点断时拍启动快照(正在调试的机器)
也就是说,当鼠标不能点击屏幕时,否则下次恢复快照时,可能无法连接到被调试的机器。
1.配置文件路径下的双机调试
告诉我这条路在哪里
/Users/Virtual Machines.localized/com1
com1 是串口的名称
前面的路径是虚拟机的存储位置(右键单击虚拟机,在中显示该路径)
/Users/Virtual Machines.localized/
/Users/{username}/Virtual Machines.localized/ 通常就多个username
然后右键单击以显示包内容并找到要编辑的 .vmx 文件。
先删除所有内容,然后在最后添加以下内容(注意区分调试器和被调试机器)
调试机器
serial0.fileName = "/Users/Virtual Machines.localized/com1"
serial0.present = "TRUE"
serial0.fileType = "pipe"
serial0.yieldonMsrRead = "TRUE"
serial0.startConnected = "TRUE"
调试机器
serial0.fileName = "/Users/Virtual Machines.localized/com1"
serial0.present = "TRUE"
serial0.fileType = "pipe"
serial0.pipe.endPoint = "client"
serial0.yieldonMsrRead = "TRUE"
2.配置被调试机器
与上面相同
开机后,以管理员身份打开cmd,执行以下两条命令:
bcdedit /copy {current} /d "MyOS"
bcdedit /debug ON
然后不要急着重启
3.配置调试机
与上面相同
配置通讯
4.重启调试好的机器
当遇到引导访问时,只需按 Enter 即可收到请求。
5. 将断点设置到内核,然后调试器拍摄快照。
注:win10调试win10
在Win10上调试Win10时,被调试机器开机时会出现多个断点。 按住 g 直到进入桌面。
进入桌面后,断开与内核的连接并拍摄快照。
PC端双机调试网上有很多教程,B站也有视频跟着配置。
或者只注意关机顺序和启动顺序。 如果顺序错误,你就会陷入困境。 如果还不能解决问题,请重启物理机。