实现windbg与VMware的单机调试
windbg双机调试

心里总感觉 SOFTICE 的发展快到末路了。
果然在 2006 年时Compuare 宣布停止 SOFTICE 开发。
这里消息确实令很多人心痛。
但与此同时,Windows 的配套调试器 windbg , cdb 等不断更新,功能不断强大,你必须选择它,虽然它内核调试速度不理想。
后来我知道了 syser debuger, 国人写的不错的调试器,基本上 SOFTICE 命令等相似,上手很快,单机调试即可,速度挺快。
但是要开发windows 内核程序,最好还是 windbg,至少 windbg 与系统的兼容肯定不会差吧。
因为我自己的机器配置不高,所以平时玩的时候就用 syser , 但在公司真正解决问题时还是用 windbg。
windbg 除了速度慢点(还能忍受,现在我公司的机器是AMD双核的),还有就是初次使用配制比较麻烦,你如果真实的使用 2 台机器调试那问题可能会更多。
我每次重装系统后,都要上网找资料然后一遍遍配制挺烦人的,这次总结一下。
首先,先下载/download/symbols/packages/windowsxp/WindowsXP-KB835935 -SP2-slp-Symbols.exe?符号表,然后安装到真实系统中。
再下载/download/symbols/debuggers/dbg_x86_6.5.3.8.exe?WinDbg 程序的最新版本,同样也安装到真实系统中。
接下来我们要在虚拟机中装系统了,我用的是WinXP SP2。
安装完成后修改boot.ini文件。
在里面[operating systems]节中加入一行," multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows?XP Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200 "随后关闭系统。
WinDBG+VMware双机内核调试环境搭建

WinDBG+VMware双机内核调试环境搭建因为接下来要写个文件过滤驱动,要有个内核调试环境,昨天天搭了一下,比较简单,网上已有详细步骤。
vmware中装个winxp,暂且称为SlaveOS吧。
相应的我们主系统成为MasterOS。
我的步骤如下:1.先在MasterOS上装WinDbg。
在桌面建一个快捷方式,修改程序启动参数。
具体操作为右键WinDBG快捷方式-》属性。
现在的目标内容为(假设):"E:\Program Files\Debugging Tools for Windows (x86)\windbg.exe",在它后边加上-b -k com:pipe,port=\\.\pipe\com_1,resets=0,注意,红字部分加在引号外面。
确定。
2.MasterOS设置结束,接下设置vmware虚拟机。
设置虚拟机需要在SlaveOS关闭的情况下进行。
打开虚拟设置,增加一个“Serial Port",如图1:图13.下一步选择”Output to named piped".如图2:图24.虚拟机配置完毕,接下来启动SlaveOS进行配置。
打开虚拟机c:\boot.ini。
在文件末尾加上:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com_1 /baudrate=115200保存后重启。
启动菜单会新增一个debug的菜单。
如图3:图35.在上述界面按下上下箭头键。
回到MasterOS,通过快捷方式打开WinDBG,此时WinDBG会出现如下提示:Microsoft (R) Windows Debugger V ersion 6.11.0001.404 X86Copyright (c) Microsoft Corporation. All rights reserved.Opened \\.\pipe\com_1Waiting to reconnect...回到虚拟机,按下回车,windgb会显示连接信息。
单机调试方案

单机调试方案在软件开发过程中,调试是一个至关重要的环节。
通过调试,我们可以发现和解决代码中的错误,确保软件的功能和性能得以正常运行。
单机调试是指在本地环境中进行调试,而不是在远程服务器上进行调试。
在本文中,我们将讨论一种单机调试方案,以便帮助开发人员更好地进行调试工作。
一、搭建调试环境在开始调试之前,我们首先需要搭建一个适合的调试环境。
以下是一些必备的工具和设备:1. 开发工具:选择一种适合自己的开发工具,如Visual Studio、Eclipse等。
在使用开发工具的过程中,可以利用其提供的调试功能,如断点调试、查看变量值等。
2. 调试器:调试器是一个用于发现和诊断代码错误的工具。
常见的调试器有GDB、LLDB、WinDbg等。
通过调试器,我们可以在代码中设置断点,并逐步执行代码,查看代码执行的过程和结果。
3. 物理设备:如果我们的软件需要在特定的硬件环境中运行,那么我们需要准备相应的物理设备。
例如,如果我们开发的是一个嵌入式系统的软件,那么我们需要有一个嵌入式开发板作为调试目标。
二、调试方法和技巧在搭建完调试环境之后,我们可以开始进行调试工作了。
以下是一些调试方法和技巧,帮助开发人员更有效地进行调试:1. 断点调试:在代码中设置断点,并逐步执行代码,查看代码执行过程中的变量值和状态。
当程序执行到断点处时,代码会停下来,我们可以逐行查看代码的执行情况,从而定位和解决问题。
2. 日志调试:在关键的代码位置插入日志语句,记录代码的执行情况和变量值。
通过查看日志文件,我们可以了解代码的运行轨迹,并分析出问题所在。
3. 条件断点:除了普通的断点之外,我们还可以设置条件断点。
条件断点是在断点处添加一个条件表达式,只有满足该条件时才会触发断点。
通过条件断点,我们可以更加精确地定位和解决问题。
4. 远程调试:有些调试场景需要和远程服务器进行交互。
为了方便调试,我们可以通过远程调试的方式进行调试。
远程调试能够让我们在本地开发环境中调试远程服务器上的代码,大大提高了调试效率。
windbg+vmware+win7 内核

一. vmware 下安装:windows 7 ultimate x86 中文版 1、vmware (请使用尽可能新的版本以对 tools 的支持) 的设置 打开相应 vmware 虚拟机上的 “Virtaul Machine Settings”---> “Hardware”选项中 ----> 点击 “Add” 添加一个串口设备 Seiall Port ----> “Next” ----> 在 Serial Port 里选中“Output to named pipe” ----> “next” ----> “Finish” 最后,回到 “Virtual Machine Settings”页面时,在“I/O Mode” 里选中“Yield CPU on poll” 这样 vmware 的设置就好了。
注意看清楚:Serial Port 1 还是 Serial Port 2,接下来会用到。
2、windbg 的使用 创建 windbg.exe 所在目录的环境变量后,在桌面写个批处理,保存为 vmware_win7.bat 内 容如下: 在桌面上建一个便捷方式,命令行是: windbg -b -k com:port=//./pipe/com_1,baud=115200,pipe 这样在开启 vmware 中的 windows 7 后运行这个便捷方式, windbg 与 guest OS “win7” 就建立成联线方式。
二、guest OS - win7 中设定1、在 bootmgr 中下断点 在 vista 及后续的 windows 已经取消了 ntldr 模块管理引导, 转而以 bootmgr 模块管 理引导系统。
在我的 windows 7 中要设定在哪个部分进行调试。
windws 7 可调试部分有 4 个:bootmgr 模块、winload 模块、WinResume 模块以及 windows 内核模块 Nt 模块 可以在上述的 4 个模块下断点进行调式 (1) 以管理员身份运行“命令提示符” (2) 在“命令提示符”窗口中,输入以下命令: bcdedit /set {bootmgr} bootdebug on bcdedit /set {bootmgr} debugtype serial bcdedit /set {bootmgr} debugport 1 bcdedit /set {bootmgr} baudrate 115200 注意一个细节,bcdedit /set {bootmgr} debugport 1 这一行最后的 1 对应 Serial Port 1, 所以如果是 Serial Port 2 则设置为 bcdedit /set {bootmgr} debugport 2 否则连不上。
WinDebug+虚拟机---调试驱动的配置

WinDebug+虚拟机---调试驱动的配置WinDebug+虚拟机---调试驱动的配置现在一直在做有关Windows驱动开发的工作,驱动开发非常重要的一环是驱动的调试。
对于Windebug结合虚拟机的双机驱动调试,其配置还是小有点麻烦的。
虽然原先自己配置的时候,都成功了,而且也进行了很多的开发和调试。
但某一天再来设置这些东西的时候,却发现出了问题,甚至去网上找的一些资料也没有用。
现在把自己调试驱动时的切身体会写下来,一方面自己以后也可以看看,也给广大初入门的朋友做以参考。
一、调试环境的安装(1)安装虚拟机(VM)及Windows XP系统(2)安装WinDebug二、配置调试环境(1)在WinDebug的快捷方式上添加:-k com:port=\\.\pipe\com_1,baud=115200,pipe。
例如我的主机上Windebug快捷方式设置以后如下:"C:\Program Files\Debugging Toolsfor Windows (x86)\windbg.exe" -k com:port=\\.\pipe\com_1,baud=115200,pipe (2)在虚拟机中,添加一个串行端口点击"Edit virtual machine settings",添加一个Serial Port,选择"Output to named pipe",然后下一步第一框里保持默认的""第二框里选"This end is the server."第三框里选"The other end is an application."选中"Connect at power on"然后点击"Finish然后在新窗口中选中"Yield CPU on poll"。
windbg使用方法

windbg使用方法Windbg是一款由微软公司开发的调试工具,它可以帮助开发人员分析和诊断Windows操作系统和应用程序的问题。
本文将介绍Windbg的基本使用方法,希望能够帮助读者更好地利用这个工具进行调试和分析。
首先,我们需要了解如何安装Windbg。
通常情况下,Windbg是作为Windows驱动程序开发工具包(Windows Driver Kit)的一部分发布的,也可以在微软的官方网站上下载到独立安装包。
安装完成后,我们可以在开始菜单或者安装目录中找到Windbg的可执行文件。
接下来,我们需要了解如何打开并配置Windbg。
在打开Windbg 后,我们可以通过“文件”菜单中的“符号文件路径”选项来设置符号文件的路径,以便Windbg能够正确地加载符号文件。
符号文件对于调试非常重要,它包含了源代码和可执行文件之间的映射关系,能够帮助我们更好地理解程序的运行状态。
在Windbg中,我们可以通过“文件”菜单中的“打开转储文件”选项来打开需要分析的转储文件(dump file)。
转储文件是程序崩溃时生成的一种内存快照,包含了程序崩溃时的内存状态和调用栈信息。
通过分析转储文件,我们可以找出程序崩溃的原因,并进行相应的调试和修复。
除了分析转储文件外,我们还可以通过“调试”菜单中的“附加到进程”选项来附加到正在运行的进程,以实时地监视和分析程序的运行状态。
这对于调试一些无法通过转储文件分析的问题非常有帮助,比如内存泄漏、死锁等问题。
在Windbg中,我们可以使用各种命令来进行调试和分析。
比如,通过“!analyze”命令可以自动分析转储文件,并给出可能的崩溃原因;通过“kb”命令可以查看当前线程的调用栈信息;通过“!heap”命令可以查看进程的堆内存分配情况等等。
熟练掌握这些命令对于高效地进行调试和分析非常重要。
除了命令之外,Windbg还提供了丰富的调试工具,比如内存窗口、寄存器窗口、线程窗口等,这些工具可以帮助我们更直观地了解程序的运行状态。
windbg 驱动调试

本文主要记录个人安装VMware+Windgb+Win7内核驱动调试的笔记。
一、安装环境1主机:Windows Vista Bussiness2虚拟机:VMware 73GUestOS: Win74Windbg: 6.11二、虚拟机配置打开相应vmware 虚拟机上的“Virtaul Machine Settings“2.“Hardware”选项中—-> 点击“Add”添加一个串口设备SeriallPort .3.”Next”,在“Serial Port”里选中“Output to named pipe”4.”next”,然后如下设置:5.确定之后,回到如下界面,在右脚”Virtual Machine Settings”页面时,在“I/O Mode”里选中“Yield CPU on poll“6. Ok之后就设定完毕了。
三、Windbg设置下载地址:Windbg安装之后,设置一个桌面快捷方式,然后,右键->属性,在Target中的引号后面添加如下:-b -k com:pipe,port=\\.\pipe\com_1,resets=0或者是:-b -k com:port=\\.\pipe\com_1,baud=115200,pipe 【二者似乎皆可】四、GuestOS设置Vista和XP不同, 没有boot.ini文件, 需要用bcdedit进行启动设置。
1. 在administrator权限下, 进入command line模式, 键入bcdedit命令, 会出现以下界面:2. 然后, 设置端口COM1, baudrate为115200 (除COM1外, 也可以用1394或USB. 1394用起来比COM口快多了, 当然前提是你需要有1394卡及其驱动. 很恶心的是Vista不再支持1394的文件传输协议, 但是用windbg双机调试还是可以的)命令为:bcdedit /dbgsettings {serial [baudrate:value][debugport:value] | 1394 [channel:value] | usb }3.接着, 我们需要复制一个开机选项, 以进入OS的debug模式命令为:bcdedit /copy {current} /d DebugEntyDebugPoint 为选项名称, 名字可以自己定义. 然后复制得到的ID号.4. 接着增加一个新的选项到引导菜单bcdedit /displayorder {current} {ID}这里的{ID}的ID值是刚生成的ID值.5. 激活DEBUG : bcdedit /debug {ID} ON这里的{ID} 的ID值还是刚才的ID值.6. 命令执行成功后, 重新启动机器.或者更简单的图形界面设置:在msconfig界面中,选Boot,再选Advanced options,在选择Debug、Debug port、Baud rate都打上钩。
windbg 内核调试原理(一)

windbg 内核调试原理(一)windbg 内核调试什么是 windbg 内核调试?•windbg 是一款强大的调试工具,可以用来调试 Windows 操作系统及其应用程序。
•内核调试是 windbg 的一个功能,用于调试操作系统内核,可以帮助开发人员定位和解决系统崩溃、死锁、性能问题等。
内核调试原理1.内核调试利用 Windows 的调试接口和调试驱动程序实现。
2.它通过在目标系统中安装一个调试驱动程序,与 windbg 配合使用,来进行调试。
3.此外,还需要使用串行线缆或网络连接将目标系统和调试主机连接起来。
准备工作•在进行内核调试之前,需要安装 windbg 和调试符号文件。
•调试符号文件包含了操作系统的调试信息,是进行调试的必要文件。
配置目标系统1.在目标系统中配置调试选项:•打开“控制面板”,找到“系统和安全”。
•点击“系统”,然后选择“高级系统设置”。
•在“高级” 选项卡下,点击“设置” 按钮。
•在“启动和故障恢复” 对话框中,点击“设置”。
•将“调试信息” 设置为“完全内存转储”。
2.进行启动选项配置:•打开“命令提示符”,输入以下命令:bcdedit /debug onbcdedit /dbgsettings serial debugport:1 baudrate:115200•这样将启用调试,并配置串行端口为 COM1,波特率为 115200。
配置调试主机1.在调试主机上打开 windbg:•首先,确保已经安装了 windbg。
•然后,在开始菜单中找到 windbg,并打开它。
2.配置串口调试选项:•点击“文件” -> “选项” -> “调试选项”。
•在“调试选项” 对话框中,选择“串行” 选项卡。
•选择正确的串行端口和波特率(与目标系统配置一致)。
连接目标系统和调试主机•使用串行线缆或网络连接将目标系统和调试主机连接起来。
开始内核调试•在 windbg 中,点击“调试” -> “启动调试”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现Windbg与VMware的单机调试
此文档中涉及到的软件版本:
Windbg:6.12.0002.633 X86
VMware:8.0.1
虚拟系统:XP SP3
1、安装好虚拟机系统之后,关闭系统,为虚拟机系统增加串口。
点击VM->Settings
点击Add
选择Serial Port,点击next
选择Output to named pipe,点击next
在Named pipe文本框中输入管道名,图中设为”\\.\pipe\debugger”,其它都按图中所示即可,点击Finish,完成串口设置。
2、打开boot.ini文件,修改启动项。
开始->运行->c:boot.ini,以下为boot.ini文件的内容:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /noexecute=optin /DEBUG /DEBUGPORT=com2 /baudrate=115200
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional [VirtualKD]" /DEBUG /DEBUGPORT=bazis /fastdetect /noexecute=optin
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
3中不同的颜色代表不同的操作系统,其中红色部分为启动调试系统,需要添加到boot.ini文件中。
特别注意:/DEBUGPORT=com2,此处与在虚拟机中添加串口有关,如果串口显示Serial Port 1,则应设置为/DEBUGPORT=com1,下图中显示的是Serial Port 2,因此设置为/DEBUGPORT=com2,否则连接不上,切记!!!
至此虚拟机已经设置完毕。
3、设置WinDbg
方法一:设置WinDbg的快捷方式
在目标中填入如下内容:
C:\WinDDK\7600.16385.1\Debuggers\windbg.exe -b -k com:pipe,port=\\.\pipe\debugger,resets=0,
其中C:\WinDDK\7600.16385.1\Debuggers\windbg.exe为windbg.exe所在的目录位置,不同的安装路径会有不同,后面黑体部分是涉及到调试的部分,port 的设置要与在虚拟机串口中设置的一致。
参数意义:
-b:一旦主机目标机之间建立起连接,立刻中断目标机
-k:内核调试
com:设置连接目标机的通信端口(此处为命名管道)和波特率(此处为115200)reset=0:指定在主机与目标机同步时,可以发送任意数量的reset包(Specifies that an unlimited number of reset packets can be sent to the target when the host and target are synchronizing)。
方法二:开始->运行,输入C:\WinDDK\7600.16385.1\Debuggers\windbg.exe -b -k com:pipe,port=\\.\pipe\debugger,resets=0,
如下图所示:
注意内容同方法一。
方法三:点击file->kernel debugging,如下所示:
此种连接方式一直没有成功,总是处于Waiting to reconnect...状态,不知为何!!!
4、重新启动虚拟机上的系统,并选择新加入的启动配置进行启动,如下图:
5、使用3中的方法一或方法二启动WinDbg,稍等一下就可以连上了。
如下图所示:
6、如果先启动WinDbg,则出现如下错误,不知为何???
7、调试符号的设置
1)、系统调试符号的设置
根据虚拟机中的系统版本从微软的网站上下载相应的调试符号包(大约
180M~200M),安装调试符号包,默认情况下会安装到C:\ WINDOWS\Symbols,也可以自己建立一个文件夹用于存放系统调试符号,我是在C盘建立一个Symbols文件夹。
当然,不安装符号包的话也可以设置成调试时自动从网上下载。
2)、自己的调试符号的设置
建一个文件夹用于存放我们自己编译出来的驱动的符号文件单独存放,不要跟系统的混到一起。
我这里在C盘建立一个MySymbols文件夹,用于存放自己的符号文件。
给这个文件夹创建一个快捷方式,把它放到C:\Documents and Settings\你的用户名\SendTo文件夹下(注意,有时此文件处于隐藏状态),这样,以后编译完驱动以后,直接在符号文件上右击->发送到“MySymbols”就可以了。
3)、环境变量的设置
如果想在Windbg启动时自动识别符号路径的设置,需要建立一个环境变量,在“我的电脑”上右击,“属性”->“高级”->“环境变量”,新建一个名为_NT_SYMBOL_PATH的环境变量,值为:
C:\Symbols;C:\MySymbols;SRV*C:\Symbols*/downl oad/symbols
这样设置以后,系统的调试符号在C:\Symbols下,而我们自己驱动的调试符号在C:\MySymbols下,当符号文件不匹配时Windbg会自动连网从/download/symbols下载符号文件到C:\Symbols,下次再用到时就不用下载了。
设置好,保存就可以了,修改环境变量需要重新启动系统才能生效。
在调试符号基本全了以后(调试时基本不再出现Windbg再连网下载符号文件的情况),建议把环境变量中联网的部分去掉。
即环境变量值改为:C:\Symbols;C:\MySymbols,
这样就断了它连网下载的念想,否则你一旦打错个符号,它还是会很负责地上网查找、下载,结果还是找不到,浪费很多时间。
如果确实某个符号找不到需要临时上网找,那么执行下面命令就可以了
.sympath+ SRV*C:\Symbols*/download/symbols
这样就重新恢复了Windbg上网下载符号的能力
4)、在windbg中设置符号文件
打开windbg,File->symbol file path,填入符号文件路径,C:\mySymbols;C:\Symbols;SRV*C:\Symbols*/download/s ymbols,勾选复选框reload,点击OK即可下载符号文件。