青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

aurain
技術(shù)文摘
posts - 137,  comments - 268,  trackbacks - 0

    我這里將一步一步的介紹,是從新手的角度來講的,所以對高手來說,可能有些啰嗦。如果你看完這篇文章還不知道如何設(shè)置,那么原因可能有兩個(gè):1. 我沒講好;2. 你需要稍微認(rèn)真看下并實(shí)踐下,并實(shí)現(xiàn)對相關(guān)基本概念要有所了解。

本文參考了以下的blog及文章,在此對作者的辛勤勞動(dòng)表示感謝!

1. http://hi.baidu.com/1ian9yu

2. http://m.shnenglu.com/fwxjj/archive/2008/01/17/41349.html

 

一、環(huán)境的搭建

       首先介紹如何使用WinDbgVMware來搭建調(diào)試內(nèi)核驅(qū)動(dòng)的環(huán)境。這里先把我用到的軟件版本說明下:

WinDbg 6.10 X86http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx#a

Windows符號表,當(dāng)然也是XP版本的, http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#d

VMware WorkStation 6.0(這個(gè)網(wǎng)上搜,我是公司內(nèi)部網(wǎng)下的,應(yīng)該有更新的版本了,這個(gè)能用,所以就先用著,主要是公司大家統(tǒng)一安裝這個(gè))

虛擬機(jī)安裝的操作系統(tǒng)是Windows XP SP2,真實(shí)的(我自己用的)操作系統(tǒng)也是Windows XP SP2。在這里,先統(tǒng)一稱呼,虛擬機(jī)操作系統(tǒng)叫GuestOS,實(shí)際的叫HostOS

 

下面是詳細(xì)的步驟:

1. 下載VMware并安裝好

2. 下載Windows符號表并安裝好,按默認(rèn)設(shè)置即可(C:\Windows\Symbols\,這個(gè)路徑稍后要用到)

3. 下載WinDbg并安裝,也是默認(rèn)即可

4. 接下來在虛擬機(jī)VMware里安裝操作系統(tǒng)(XP),安裝好后啟動(dòng)進(jìn)入GuestOS 修改boot.ini文件(找不到?在C盤根目錄下,要設(shè)置系統(tǒng)文件可顯示,如何設(shè)置就不說了,自己Google)。在文件中添加一行(添在文件最后即可,也即operating systems]節(jié)中加入一行),內(nèi)容如下:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debug /debugport=com1 /baudrate=115200

上面可以完全copy過去

5. 隨后關(guān)閉系統(tǒng)。配制虛擬機(jī)的硬件,點(diǎn)擊 "Edit virtual machine settings",添加一個(gè)Serial Port,選擇"Output to named pipe",然后下一步,第一框里保持默認(rèn)的 \\.\pipe\com_1, 第二框里選"This end is the server." 第三框里選"The other end is an application." 選中 "Connect at power on"選項(xiàng),點(diǎn)擊完成,再在settings主界面的I/O mode選中”Yield CPU on poll”選項(xiàng)。

好,以上是在虛擬機(jī)要做的全部事情,下面我們要在真實(shí)系統(tǒng)中做一些設(shè)置了。

 

6. 在真實(shí)系統(tǒng)中,我們要在設(shè)備管理器中。找到通訊端口Com1口,然后再屬性頁中修改他的速率(每秒位數(shù))為115200

7. 為使用方便,我們在桌面新建一快捷方式(桌面右鍵-新建-快捷方式),快捷方式的命令行為

"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -y C:\Windows\Symbols\ -b -k com:pipe,port=\\.\pipe\com_1

上面可以完全copy過去,當(dāng)然引號內(nèi)的路徑是需要修改的,就是你安裝的WinDbg路徑了。

這里面-y后面的路徑就是我們前面安裝符號表的路徑。

名稱我設(shè)置為WinDbg

好,到此為止,所有設(shè)置完畢,現(xiàn)在開始運(yùn)行了。

8. 再此啟動(dòng)GuestOS,這個(gè)時(shí)候可以看到操作系統(tǒng)選擇屏幕了(類似你安裝了雙操作系統(tǒng)),我們選擇那個(gè)帶有Debug的。

9. 雙擊第7步創(chuàng)建的那個(gè)快捷方式WinDbg,它會(huì)去自動(dòng)連接GuestOS,這是在WinDbg里會(huì)顯示一些信息。

至此,環(huán)境設(shè)置完畢

附加說明:

原理就是VMwareGuestOS虛擬一個(gè)COM口,并在HostOS創(chuàng)建了一個(gè)管道,這個(gè)管道的一端連接GuestOSCOM口,另一端則是WinDbg,所以HostOSWinDBG)和GuestOS的所有數(shù)據(jù)交換都是通過這個(gè)管道來流通轉(zhuǎn)發(fā)的。

1.我的電腦沒有COM口,所以不能搭建調(diào)試環(huán)境?

不是的,你的電腦有沒有COM口與這個(gè)調(diào)試環(huán)境沒有任何關(guān)系,整個(gè)過程根本沒有使用到你電腦的物理COM口。VMware只是在GuestOS虛擬了一個(gè)COM口而已。

2.在創(chuàng)建串口(COM口屬于串口的一種)的過程中,看到指定的管道為“\\.\pipe\com_1”,我可以指定為其他嗎?

可以的。這只是指定一個(gè)管道名字而已,VMware用這個(gè)名字來創(chuàng)建一個(gè)命名管道。我們完全可以改成“\\.\pipe\liangyu”“\\.\pipe\aaa”等等,但記得要把WinDbg的快捷方式處的管道名字更改為一樣。

3.我可以在GuestOSboot.ini文件更改那個(gè)COM口嗎?比如把COM1改為COM2

不可以的,VMware會(huì)把虛擬出的這個(gè)COM口總是定義為com1GuestOS的其他COM口都得讓位。

4.看到很多教程都說到要勾選“I/O mode” 一定要勾選嗎?

這個(gè)勾選不勾選都可以,我沒發(fā)現(xiàn)有什么大的區(qū)別。

5.在更改GuestOSboot.ini文件的時(shí)候,增加有“/debugport=com1 /baudrate=115200”這些內(nèi)容,含義是?

使用的調(diào)試端口是com1,波特率是115200。這是在告訴GuestOS現(xiàn)在要調(diào)試內(nèi)核(操作系統(tǒng)),把調(diào)試信息往COM1口輸出,使用的波特率是115200
我在試驗(yàn)的時(shí)候發(fā)現(xiàn),這個(gè)波特率其實(shí)也不一定要設(shè)為115200,完全可以修改為112233445566等等其他數(shù)據(jù)。可能是因?yàn)?/span>WinDBG自動(dòng)調(diào)節(jié)波特率來適配管道或COM口,所以波特率在這里沒有實(shí)際意義。

6.WinDbg的快捷方式那里添加了“-b -k com:pipe,port=\\.\pipe\com_1,resets=0”這些內(nèi)容,含義是?

大概意思就是使用管道“\\.\pipe\com_1”來進(jìn)行內(nèi)核調(diào)試。各個(gè)參數(shù)的說明在WinDbg的參考文檔里面有,這里粘貼一下:

-b

(Kernel mode only) This option has two effects:

1. The debugger will break into the target computer immediately upon connection.

2. After a reboot, the debugger will break into the target computer once the kernel is initialized. See Crashing and Rebooting the Target Computer for details and for other methods of changing this status.

-k [ConnectType]

(Kernel mode only) Starts a kernel debugging session. For details, see Choosing Kernel Debugging Settings. If -k is used without any ConnectType options following it, it must be the final entry on the command line.

resets=0

Specifies that an unlimited number of reset packets can be sent to the target when the host and target are synchronizing. Use the resets=0 parameter for Microsoft Virtual PC and other virtual machines whose pipes drop excess bytes. Do not use this parameter for VMware or other virtual machines whose pipes do not drop all excess bytes.

7.一定要這樣創(chuàng)建一個(gè)WinDbg的快捷方式才能進(jìn)行調(diào)試嗎?

不是的,我們完全可以先正常運(yùn)行WinDbg,然后選擇菜單“File”--->“Kernel Debug...”,然后在彈出的對話框中進(jìn)行設(shè)置,這樣也是可以進(jìn)行調(diào)試的。

8.上面第8、第9步有先后順序嗎?看到很多資料都很強(qiáng)調(diào)這個(gè)先后順序。

這個(gè)是沒有先后順序的。你可以先執(zhí)行第8,再到第9步,或者先執(zhí)行第9,再到第8步都是沒有關(guān)系的。

選擇Debug模式后,即使進(jìn)入系統(tǒng)操作了很久,運(yùn)行了很多東西,但只要你運(yùn)行WinDbg,照樣能夠連上去調(diào)試。所以說這里是沒有先后順序的。

 

 

 

下面介紹第二部分,驅(qū)動(dòng)調(diào)試

 

二、驅(qū)動(dòng)調(diào)試

       編寫完驅(qū)動(dòng)后,我們當(dāng)然要進(jìn)行調(diào)試(除非你是蓄意想讓用戶不斷藍(lán)屏,當(dāng)然牛人除外),這不可能在HostOS(本機(jī))里調(diào)試,否則BOSD就麻煩了,而且支持本機(jī)調(diào)試的調(diào)試器比較流行的只有softice,這個(gè)東西早就停止更新了,而且對目前的操作系統(tǒng)的支持更是非常不好。所以使用WinDbgVMware調(diào)試驅(qū)動(dòng)程序絕對是我們最佳的選擇。

       在這里,我就以微軟自帶的Passthru(其實(shí)什么驅(qū)動(dòng)都是一樣的)為例。

好了,開始。

1. 按照之前的說明搭好調(diào)試環(huán)境后,先用WinDbg連上VMware,如果GuestOS阻塞了,則在WinDBG輸入命令“g”,然后回車,直到讓GuestOS跑起來。我們把編譯好的驅(qū)動(dòng)文件(*.sys)放到GuestOS里,回到WinDbg,按“Ctrl+Break”WinDbg會(huì)讓GuestOS暫停下來,我們也可以在WinDbg的命令欄輸入命令了,在這里輸入“bu drivername!driverentry”(本例是bu passthru!driverentry,大小寫不限)可以在驅(qū)動(dòng)的DriverEntry函數(shù)的入口點(diǎn)下一個(gè)延遲斷點(diǎn),其實(shí)BU的意思就是Set Unresolved BreakpointWinDbg會(huì)記住這個(gè)斷點(diǎn),當(dāng)這個(gè)驅(qū)動(dòng)被加載了并且執(zhí)行到這個(gè)地方,WinDbg會(huì)暫停GuestOS讓你進(jìn)行調(diào)試操作。drivername是你的驅(qū)動(dòng)名字,比如我在這里的驅(qū)動(dòng)名字是passthru,那我在這里輸入的命令如下:bu passthru!driverentry

2. 回車后即下好斷點(diǎn)了。現(xiàn)在打開源文件,源文件在HostOS呢。“Ctrl+O”找到驅(qū)動(dòng)的源文件打開,我們打開passthru.c

3. 還要設(shè)置符號路徑。“Ctrl+S”打開設(shè)置窗體,符號路徑一般有兩個(gè)(可以有多個(gè)),一個(gè)是你設(shè)置保存系統(tǒng)符號文件的路徑,另一個(gè)是你驅(qū)動(dòng)的PDB的路徑,以分號隔開。如下:

C:\Windows\Symbols\;E:\Passthru\driver\objchk_wxp_x86\i386

4. 記得勾選“Reload”OK后稍等片刻,等WinDbg把這些東西加載完畢后再操作。加載完后我們輸入“g”,回車,讓GuestOS跑起來。在GuestOS里運(yùn)行驅(qū)動(dòng)加載/卸載工具把我們的驅(qū)動(dòng)加載起來。可以看到,已經(jīng)斷下來了,我們可以源碼調(diào)試驅(qū)動(dòng)了。

 

注:打開源文件和設(shè)置符號路徑可以在一開始的時(shí)候就做,這是沒有嚴(yán)格先后順序的。

 

 

posted on 2009-01-04 16:36 閱讀(5837) 評論(4)  編輯 收藏 引用 所屬分類: windows驅(qū)動(dòng)

FeedBack:
# re: 使用WinDbg和VMware調(diào)試NDIS中間層驅(qū)動(dòng)程序
2009-01-12 11:42 | daisy
好久沒有觀注,支持一下。。。  回復(fù)  更多評論
  
# re: 使用WinDbg和VMware調(diào)試NDIS中間層驅(qū)動(dòng)程序
2009-01-12 15:34 |
@daisy
...  回復(fù)  更多評論
  
# re: 使用WinDbg和VMware調(diào)試NDIS中間層驅(qū)動(dòng)程序
2009-01-15 18:57 | tangxinfa
謝謝,真是好文章啊,我現(xiàn)在也可以單步調(diào)試驅(qū)動(dòng)了。  回復(fù)  更多評論
  
# re: 使用WinDbg和VMware調(diào)試NDIS中間層驅(qū)動(dòng)程序
2009-03-13 16:06 | zhang
.load ndiskd可以加載ndis模塊。
通過!miniports可以查看所有微端口的信息。
通過!miniport "微端口地址" 可以查看某個(gè)微端口的信息。  回復(fù)  更多評論
  

<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(17)

隨筆分類(138)

隨筆檔案(137)

網(wǎng)絡(luò)開發(fā)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 501893
  • 排名 - 37

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产免费亚洲高清| 亚洲欧洲一区二区在线观看| 一本到12不卡视频在线dvd| 久久久久在线观看| 国产精品久久久久久久久久妞妞 | 亚洲国产精品传媒在线观看| 久久超碰97中文字幕| 亚洲欧美日韩成人| 一区二区激情| 99在线精品视频| 亚洲一区www| 欧美在线免费观看亚洲| 久久麻豆一区二区| 亚洲第一综合天堂另类专| 亚洲精品在线三区| 亚洲免费一区二区| 久久久无码精品亚洲日韩按摩| 久久久久久久久久久成人| 老司机精品久久| 欧美日本在线看| 国产精品一区二区你懂的| 国产曰批免费观看久久久| 亚洲国产精品成人| 亚洲一区二区三区精品在线观看| 亚洲综合色自拍一区| 久久久一二三| 夜夜精品视频| 久久久精品一品道一区| 欧美韩日一区| 国模 一区 二区 三区| 亚洲精选视频在线| 久久久久久亚洲精品中文字幕 | 亚洲天堂av在线免费观看| 亚洲欧美日韩一区二区在线| 久久夜色精品国产亚洲aⅴ| 亚洲一区二区三区四区在线观看| 久久久www| 一区二区三区国产盗摄| 久久网站免费| 欧美三级在线播放| 欧美不卡视频一区| 国产美女高潮久久白浆| 亚洲日本在线观看| 久久精品国产综合| 亚洲一区视频在线| 欧美日韩精品免费 | 国产精品v一区二区三区 | 亚洲一区视频在线| 欧美黄网免费在线观看| 亚洲欧美美女| 欧美午夜电影完整版| 亚洲欧洲在线视频| 欧美成人精精品一区二区频| 欧美一区二区三区四区夜夜大片 | 欧美理论电影在线观看| 亚洲国产成人91精品| 久久久久久久性| 香蕉久久久久久久av网站| 欧美午夜激情在线| 中文一区二区| 99在线热播精品免费99热| 欧美欧美在线| 亚洲视频中文字幕| 亚洲桃色在线一区| 国产精品乱码人人做人人爱| 一区二区三区www| 亚洲人午夜精品| 欧美成人精品h版在线观看| 亚洲电影免费观看高清完整版在线 | 一区二区三区不卡视频在线观看| 亚洲二区三区四区| 美女成人午夜| 亚洲人久久久| 亚洲欧洲三级电影| 欧美日一区二区在线观看| av成人天堂| 亚洲一二三区精品| 国内精品久久久久久久影视蜜臀| 久久精品成人一区二区三区蜜臀| 欧美一二区视频| 亚洲大片一区二区三区| 亚洲精品国产精品乱码不99 | 韩日精品视频| 免费日韩视频| 欧美区日韩区| 午夜精品久久久久久久白皮肤| 亚洲午夜精品网| 国内精品美女在线观看| 欧美成人有码| 国产精品ⅴa在线观看h| 国产精品扒开腿做爽爽爽软件| 亚洲一区二区在线免费观看视频 | 国产精品成人一区二区三区吃奶| 亚洲一区二区日本| 欧美一级淫片播放口| 亚洲国产一成人久久精品| 亚洲精品国产精品国自产观看浪潮| 欧美日韩精品免费观看| 欧美在线视频免费观看| 久久综合中文| 午夜视频在线观看一区| 亚洲精品乱码久久久久久日本蜜臀 | 国产欧美亚洲日本| 欧美高清影院| 国产精品午夜国产小视频| 免费欧美在线视频| 欧美性开放视频| 免费毛片一区二区三区久久久| 欧美日韩在线大尺度| 老司机午夜精品| 国产精品久久久久毛片软件| 欧美.日韩.国产.一区.二区| 欧美性片在线观看| 亚洲第一在线综合在线| 国产夜色精品一区二区av| 亚洲三级免费| 亚洲国产欧美国产综合一区 | 欧美黑人一区二区三区| 久久成人人人人精品欧| 欧美日韩黄色大片| 欧美成人午夜剧场免费观看| 国产精品一区视频| 99视频一区二区| 国产精品免费福利| 亚洲欧洲视频| 亚洲欧洲一区二区三区在线观看 | 久久久精品午夜少妇| 亚洲欧美伊人| 欧美人妖另类| 日韩亚洲在线| 夜夜精品视频| 欧美精品一区二区精品网| 亚洲国产你懂的| 日韩亚洲欧美高清| 欧美激情第4页| 亚洲欧洲偷拍精品| 一区二区免费在线播放| 欧美日韩性视频在线| 99精品99久久久久久宅男| 一区二区三区视频在线| 欧美三级视频在线播放| 在线性视频日韩欧美| 国产亚洲精品bt天堂精选| 亚洲电影下载| 亚洲日本无吗高清不卡| 欧美成人午夜| 亚洲日本视频| 中文欧美在线视频| 国产精品视频网| 久久都是精品| 亚洲电影免费观看高清完整版| 亚洲国产视频a| 欧美国产精品日韩| 一区二区日韩| 久久精品国产69国产精品亚洲| 国产情侣久久| 六月婷婷一区| 9久re热视频在线精品| 久久aⅴ国产欧美74aaa| 亚洲第一页中文字幕| 欧美日韩亚洲另类| 香蕉久久夜色精品国产| 免费成人av在线看| 亚洲毛片在线看| 国产精品久久777777毛茸茸| 午夜一区在线| 亚洲电影免费观看高清完整版在线观看 | 欧美日韩高清不卡| 一本高清dvd不卡在线观看| 亚洲伦伦在线| 免费观看成人鲁鲁鲁鲁鲁视频| 91久久国产综合久久蜜月精品| 久久先锋资源| 亚洲日本一区二区三区| 一区二区三区视频在线观看| 欧美亚洲动漫精品| 欧美在线免费一级片| 久久综合九色欧美综合狠狠| 激情视频亚洲| 国产精品高潮在线| 欧美专区日韩专区| 91久久国产综合久久蜜月精品 | 久久艳片www.17c.com| 亚洲电影中文字幕| 亚洲一区久久| 伊人色综合久久天天五月婷| 欧美性久久久| 久久精品国产精品亚洲| 亚洲国产精品免费| 亚洲黄一区二区三区| 国产精品一二| 免费国产一区二区| 在线视频欧美精品| 亚洲片区在线| 久久乐国产精品| 中文在线不卡| 亚洲承认在线| 精品动漫3d一区二区三区免费版| 欧美另类一区| 久久五月天婷婷|