wdbg + vmware 环境搭建

来源:互联网 发布:山西大学教务网络系统 编辑:程序博客网 时间:2024/05/15 23:53

虚拟机设置

删除虚拟打印机,添加串口后,就是串口1
串口设置为近端为服务器,远端为应用程序.

WINXP

vmware内的c:/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="xp windbg" /debug /debugport=com1 /baudrate=115200
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="xp" /noexecute=optin /fastdetect

 

在公司用的配置是

multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="xp windbg" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

 

就是直接在原来配置的基础上 附加上 /debug /debugport=com1 /baudrate=115200, 在公司是可以正常调试的, 在家里Windbg不能连接虚拟机调试. 看了http://blog.csdn.net/mergerly/archive/2009/08/21/4469947.aspx, 人家没用/noexecute=optin /fastdetect我也试了一把,搞定~。看来不能画蛇添足...

 

查了一下蛇足,

当你启用DEP(系统数据执行保护)的时候,/noexecute=optin;在这种状态下,很多程序都不能运行.

/FASTDETECT     对于W2K启动时它使系统不检查串行口和并行口。

 

现在明白为啥加/noexecute=optin /fastdetect, WinDbg不能连接vmware了.但是同样的设置,在家里咋不能用呢?

公司和家里的Windows都是winxpSp3, 公司的更新旧一些。

 

还好重点不在这。

 

我的vmware做了还原点,我回到那个还原点,去掉/noexecute=optin /fastdetect, 试验了一下,还是不行。我复制了不行的哪行配置,然后把/debug /debugport=com1 /baudrate=115200沾上,发现问题了

 

[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="xp3" /debug /debugport=com1 /baudrate=115200
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="xp2" /debug debgport=com1 /baudrate=115200
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="xp1" /noexecute=optin /fastdetect

 

原来不能运行的哪行写错了,而且调试标记前没有加/, debugport写成了debgport,Windows不认得那个标记.

这种错误啊..., 我在家间歇着试了好几天都没发现,只能去公司做调试。

 

学了很多。

看来看去都没看出来,目光还是不够锐利。

看来换件法,还是挺管用的,可以快速定位错误。


WIN7

bcdedit /? 查看帮助
C:\Users\Administrator>bcdedit /?BCDEDIT - 启动配置数据存储编辑器Bcdedit.exe 命令行工具用于修改启动配置数据存储。启动配置数据存储包含启动配置参数并控制操作系统的启动方式。这些参数以前位于Boot.ini 文件中(在基于 BIOS 的操作系统中)或位于稳定 RAM 项中(在基于可扩展固件接口的操作系统中)。可以使用 Bcdedit.exe 在启动配置数据存储中添加、删除、编辑和附加项。有关命令和选项的详细信息,请键入 bcdedit.exe /? <command>。例如,若要显示有关 /createstore 命令的详细信息,请键入:     bcdedit.exe /? /createstore有关本帮助文件中按字母顺序排列的主题列表,请运行 "bcdedit /? TOPICS"。对存储执行的命令================================/createstore    新建空的启动配置数据存储。/export         将系统存储的内容导出到文件。以后可以使用该文件还原系统                存储的状态。/import         使用 /export 命令创建的备份文件来还原系统存储的状态。/sysstore       设置系统存储设备(仅影响 EFI 系统,在重新启动后不再有效,                且仅用于系统存储设备不确定的情况下)。对存储中的项执行的命令===========================================/copy           复制存储中的项。/create         在存储中新建项。/delete         删除存储中的项。/mirror         创建存储中项的镜像。运行 bcdedit /? ID 可获得有关这些命令使用的标识符的信息。对项选项执行的命令======================================/deletevalue    删除存储中的项选项。/set            设置存储中的项选项值。运行 bcdedit /? TYPES 可获得这些命令使用的数据类型的列表。运行 bcdedit /? FORMATS 可获得有效数据格式的列表。控制输出的命令============================/enum           列出存储中的项。/v              命令行选项,完整显示项标识符,而不是使用已知标识符的名称。                单独使用命令 /v 可完整显示活动类型的项标识符。单独运行 "bcdedit" 等同于运行 "bcdedit /enum ACTIVE"。控制启动管理器的命令======================================/bootsequence   为启动管理器设置一次性启动序列。/default        设置启动管理器将使用的默认项。/displayorder   设置启动管理器显示多重引导菜单的顺序。/timeout        设置启动管理器的超时值。/toolsdisplayorder  设置启动管理器显示工具菜单的顺序。控制启动应用程序紧急管理服务的命令==========================================================================/bootems        启用或禁用启动应用程序的紧急管理服务。/ems            启用或禁用操作系统项的紧急管理服务。/emssettings    设置全局紧急管理服务参数。控制调试的命令==============================/bootdebug      启用或禁用启动应用程序的启动调试。/dbgsettings    设置全局调试程序参数。/debug          启用或禁用操作系统项的内核调试。/hypervisorsettings  设置虚拟机监控程序的参数。C:\Users\Administrator>

可以看到 /dbgsettings 是调试设置
bcdedit /? dbgsettings 查看具体调试设置

C:\Users\Administrator>bcdedit /? dbgsettings此命令设置或显示系统的全局调试程序设置。此命令不会启用或禁用任何特定启动项的调试程序。若要启用或禁用特定启动项的调试程序,请使用"bcdedit /debug < identifier> ON"。有关标识符的详细信息,请运行"bcdedit /? ID"。若要设置单个全局调试程序设置,请使用"bcdedit /set {dbgsettings} <type> <value>"。有关有效类型的信息,请运行 "bcdedit /? TYPES"。bcdedit /dbgsettings [ <debugtype> [DEBUGPORT:<port>] [BAUDRATE:<baud>]                        [CHANNEL:<channel>] [TARGETNAME:<targetname>]                        /start <startpolicy> /noumex ]    <debugtype>     指定调试程序的类型。<debugtype> 可以是 SERIAL、1394                    或 USB 之一。    <port>          对于 SERIAL 调试,指定要用作调试端口                    串行端口。这是可选设置。    <baud>          对于 SERIAL 调试,指定用于调试的                    波特率。这是可选设置。    <channel>       对于 1394 调试,指定用于调试的                    1394 通道。    <targetname>    对于通用串行总线(USB)调试,指定用于调试的                    USB 目标名称。     /start <startpolicy>   对于所有调试程序类型,此选项会指定                    调试程序启动策略。  <startpolicy> 可以是下列策略之一:                        ACTIVE                        AUTOENABLE                        DISABLE.                        如果未指定,则默认值为 ACTIVE。    /noumex         如果指定,这将导致内核调试程序忽略任何                    用户模式例外。示例:下列命令显示当前的全局调试程序设置:     bcdedit /dbgsettings下列命令设置全局调试程序设置在 com1 上以 115,200 波特进行串行调试:    bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200下列命令设置全局调试程序设置使用通道 23进行 1394 调试:    bcdedit /dbgsettings 1394 CHANNEL:23下列命令设置全局调试程序设置使用目标名称 DEBUGGING进行 USB 调试:    bcdedit /dbgsettings USB TARGETNAME:DEBUGGINGC:\Users\Administrator>

设置合适的调试启动参数

bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200 /start AUTOENABLE

这条配置的好处是: 
  如果没有WinDbg连上来, 可以正常跑.
  有WinDbg连上, 随时断住. 不用再搞2个bcdedit配置

Vmware客户机和开发机的文件共享

VMware Workstation 9.0.0 build-812388
* 装了Vmtools后, 直接往Vmware中拖动文件, 或在Vmware中拷贝文件,粘贴到开发机.
  这招有时不好使...
* 在开发机和Vmware客户机之间建立共享文件夹
  这招速度快, 而且能在拖动文件失败的情况下使用.
  而且不用重新启动vmware客户机.




将开发机的PE输出目录作为共享文件夹,真心的方便~







原创粉丝点击