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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

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

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

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

?

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

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

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

Windows 符號(hào)表,當(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 符號(hào)表并安裝好,按默認(rèn)設(shè)置即可( C:\Windows\Symbols\ ,這個(gè)路徑稍后要用到)

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

4. 接下來(lái)在虛擬機(jī) VMware 里安裝操作系統(tǒng)( XP ),安裝好后啟動(dòng)進(jìn)入 GuestOS 修改 boot.ini 文件(找不到?在 C 盤(pán)根目錄下,要設(shè)置系統(tǒng)文件可顯示,如何設(shè)置就不說(shuō)了,自己 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 過(guò)去

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 口,然后再屬性頁(yè)中修改他的速率(每秒位數(shù))為 115200

7. 為使用方便,我們?cè)谧烂嫘陆ㄒ豢旖莘绞剑ㄗ烂嬗益I - 新建 - 快捷方式),快捷方式的命令行為

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

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

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

名稱我設(shè)置為 WinDbg

好,到此為止,所有設(shè)置完畢,現(xiàn)在開(kāi)始運(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è)置完畢

附加說(shuō)明:

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

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

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

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

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

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

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

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

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

5. 在更改 GuestOS boot.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 ,完全可以修改為 112233 445566 等等其他數(shù)據(jù)。可能是因?yàn)?/span> WinDBG 自動(dòng)調(diào)節(jié)波特率來(lái)適配管道或 COM 口,所以波特率在這里沒(méi)有實(shí)際意義。

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

大概意思就是使用管道 “\\.\pipe\com_1” 來(lái)進(jìn)行內(nèi)核調(diào)試。各個(gè)參數(shù)的說(shuō)明在 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...” ,然后在彈出的對(duì)話框中進(jìn)行設(shè)置,這樣也是可以進(jìn)行調(diào)試的。

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

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

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

?

?

?

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

?

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

?????? 編寫(xiě)完驅(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è)東西早就停止更新了,而且對(duì)目前的操作系統(tǒng)的支持更是非常不好。所以使用 WinDbg VMware 調(diào)試驅(qū)動(dòng)程序絕對(duì)是我們最佳的選擇。

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

好了,開(kāi)始。

1. 按照之前的說(shuō)明搭好調(diào)試環(huán)境后,先用 WinDbg 連上 VMware ,如果 GuestOS 阻塞了,則在 WinDBG 輸入命令 “g” ,然后回車,直到讓 GuestOS 跑起來(lái)。我們把編譯好的驅(qū)動(dòng)文件 (*.sys) 放到 GuestOS 里,回到 WinDbg ,按 “Ctrl+Break” WinDbg 會(huì)讓 GuestOS 暫停下來(lái),我們也可以在 WinDbg 的命令欄輸入命令了,在這里輸入 “bu drivername!driverentry” (本例是 bu passthru!driverentry, 大小寫(xiě)不限)可以在驅(qū)動(dòng)的 DriverEntry 函數(shù)的入口點(diǎn)下一個(gè)延遲斷點(diǎn),其實(shí) BU 的意思就是 Set Unresolved Breakpoint WinDbg 會(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)在打開(kāi)源文件,源文件在 HostOS 呢。 “Ctrl+O” 找到驅(qū)動(dòng)的源文件打開(kāi),我們打開(kāi) passthru.c

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

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

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

?

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人中文字幕| 午夜视频精品| 久久精品1区| 久久精品一本| 欧美va亚洲va国产综合| 欧美本精品男人aⅴ天堂| 亚洲高清自拍| 亚洲精品日韩在线观看| 亚洲一区二区精品在线观看| 久久爱www久久做| 欧美激情视频一区二区三区免费 | 国产无一区二区| 国产日韩一区二区| 亚洲精品视频一区| 欧美一区二区性| 亚洲国产福利在线| 亚洲欧美精品在线| 欧美成人免费小视频| 国产精品欧美久久久久无广告| 国产自产精品| 亚洲私人影院在线观看| 久久一区国产| 亚洲四色影视在线观看| 久热这里只精品99re8久| 国产精品免费福利| 亚洲乱码国产乱码精品精98午夜| 欧美专区福利在线| 亚洲精品国产精品国自产观看浪潮| 国产情人节一区| 亚洲肉体裸体xxxx137| 亚洲激情精品| 久久高清一区| 一区二区国产精品| 欧美韩日视频| 亚洲国内自拍| 免费观看成人| 久久精品国产欧美亚洲人人爽| 国产精品美女www爽爽爽视频| 日韩视频在线播放| 欧美激情91| 久久性色av| 18成人免费观看视频| 久久国内精品自在自线400部| 9久草视频在线视频精品| 欧美国产综合视频| 亚洲精品一区二区三区不| 久久综合给合| 久久国产精品网站| 国内视频一区| 久久免费国产精品1| 欧美一级理论片| 国产精品一区二区在线| 亚洲永久免费| 亚洲最快最全在线视频| 欧美成人中文字幕| 亚洲另类一区二区| 亚洲精品在线视频观看| 欧美日韩不卡合集视频| 在线亚洲激情| 亚洲一区二区三区成人在线视频精品 | 欧美成人一二三| 亚洲国产成人porn| 欧美激情一区二区三级高清视频| 麻豆freexxxx性91精品| 亚洲黄色一区二区三区| 亚洲国产精品毛片| 欧美美女日韩| 午夜性色一区二区三区免费视频 | 亚洲成人直播| 欧美国产91| 一区二区三区你懂的| 日韩一级片网址| 国产精品成人免费| 久久久精彩视频| 久久久午夜电影| 亚洲精品久久久久久久久久久| 亚洲人成免费| 国产裸体写真av一区二区| 久久久噜噜噜久久人人看| 欧美mv日韩mv亚洲| 亚洲女同性videos| 久久精品亚洲热| 日韩视频免费| 亚洲欧美日韩高清| 最近看过的日韩成人| 欧美午夜一区| 亚洲在线一区二区| 久久精品视频免费| 日韩视频一区二区三区在线播放| 在线一区欧美| 亚洲电影在线看| 亚洲在线国产日韩欧美| 亚洲第一区中文99精品| 亚洲桃花岛网站| 亚洲电影观看| 99精品久久久| 91久久精品国产91久久| 亚洲免费在线| 亚洲九九精品| 性欧美video另类hd性玩具| 亚洲国产日韩欧美一区二区三区| 在线一区二区日韩| 亚洲精品韩国| 久热精品在线| 久久九九免费视频| 欧美午夜精品一区| 久久蜜桃资源一区二区老牛 | 欧美激情1区| 狼人天天伊人久久| 国产伦精品一区二区三区| 亚洲国产中文字幕在线观看| 国产麻豆精品在线观看| 亚洲美女免费精品视频在线观看| 亚洲第一综合天堂另类专| 欧美一区二区成人6969| 午夜精品三级视频福利| 国产精品福利网| 夜夜爽www精品| 一区二区国产日产| 欧美激情精品久久久久久黑人| 欧美 日韩 国产一区二区在线视频| 国产日韩精品视频一区| 亚洲在线视频网站| 欧美一区二区精品久久911| 国产精品国产精品| 一区二区三区精品| 亚洲一区www| 国产精品嫩草影院av蜜臀| 一本色道久久88综合亚洲精品ⅰ| 宅男精品视频| 国产精品美女午夜av| 亚洲专区在线| 欧美综合国产| 国产性猛交xxxx免费看久久| 亚洲一区精品在线| 久久精品亚洲一区二区| 狠狠爱成人网| 久久综合中文色婷婷| 亚洲二区在线| 亚洲人在线视频| 欧美激情精品久久久久久大尺度| 91久久精品国产91久久性色tv| 亚洲老板91色精品久久| 欧美日韩综合精品| 午夜精品剧场| 免费看精品久久片| 夜色激情一区二区| 国产精品中文在线| 久久亚洲综合网| 亚洲精品中文在线| 欧美在线视频一区二区| 欧美高清视频免费观看| 国产一区二区三区成人欧美日韩在线观看 | 久久精品av麻豆的观看方式 | 国产午夜精品视频免费不卡69堂| 亚洲免费视频成人| 久久精品免视看| 伊人成综合网伊人222| 免费成人美女女| 夜夜嗨av一区二区三区四区| 欧美一区在线直播| 亚洲国产美女精品久久久久∴| 欧美日韩精品一区视频| 亚洲欧美一区二区原创| 麻豆成人综合网| 一区二区三区精品视频在线观看| 国产精品视频专区| 麻豆精品一区二区综合av| 99人久久精品视频最新地址| 久久精品一区蜜桃臀影院| 日韩小视频在线观看| 国产色综合久久| 欧美啪啪一区| 久久人人爽人人| 亚洲在线日韩| 亚洲精品麻豆| 久久天天躁狠狠躁夜夜爽蜜月 | 你懂的视频一区二区| 中文网丁香综合网| 加勒比av一区二区| 国产精品第一区| 欧美激情亚洲自拍| 欧美一区二区三区男人的天堂| 亚洲七七久久综合桃花剧情介绍| 久久精品99无色码中文字幕| 亚洲视频中文| 亚洲日本精品国产第一区| 国产日韩欧美不卡| 欧美日韩亚洲网| 欧美激情视频在线播放| 久久久久久国产精品一区| 亚洲一区二区三区高清| 亚洲免费精品| 亚洲人妖在线| 亚洲国产欧美一区二区三区久久 | 免费成人黄色片| 午夜日韩视频| 亚洲伊人一本大道中文字幕| 一区二区av在线| 亚洲日本中文字幕免费在线不卡|