討論區快速選單
知識庫快速選單
討論區最近新進100則主題 程式設計俱樂部Facebook粉絲團 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
有關Debug Driver時設定breakPoint請教
更改我的閱讀文章字型大小
作者 : badidu(BDD)
[ 貼文 135 | 人氣 9186 | 評價 290 | 評價/貼文 2.15 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/14 下午 06:29:41
真的沒辦法了, 再度進來碰碰運氣
想今年在這總共Po了約七篇新文章, 結果只得一人回應, 也不知是我問得太難還是怎樣?

我遇到一個從沒碰過的問題, 但是因為剛開始摸Driver也沒很久, 所以我覺得應該寫WDM Driver有經驗的人都遇過吧~~

我先把我開發的過程描述出來, 請大家看一下這樣做有何問題, 給予指教一下

1. 我接了一個Printer Driver的專案, 這個Driver已經維護了有三年多, 後來人跑了, 落到我頭上
2. 我Copy整個Driver的目錄到我的電腦上(XP Sp1), 包含Source Code, Obj等
3. 本來已有安裝 Visual Studio 6.0 + sp5, 所以只要再安裝Win 2000 DDK sp1
4. 安好後Build -cZ
5. 然後安裝該Driver的Release版

以上前置作業, 再來就開始 Debug Routine了

a. 利用Visual Studio 修改 Source Code(包含PLOTTERUI 的 resource)
b. 執行windows 2000 DDK的Checked Build Environment
c. Dos下到該Driver目錄執行 Build all -c -c
d. 將Build出來的dll Copy 到 system32\spool\driver2\w32x86\3, 直接覆蓋原Release Driver
e. 執行應用程式(像小畫家, Corel Draw等)
f. 開啟Visual C++, 選Debug-> Attach Process, 選該應用程式
g. 到應用程式那(譬如小畫家), 畫一些東西後按列印, 進入列印視窗
h. 到Visual C++設中斷開始Debug
i. 發現仍有問題則回到步驟a., 繼續同樣步驟

以上大致是我的方法, 這方法我用了一陣子, 發覺都還OK, 結果因為其他工作插了進來而中斷一陣子, 等到回來要繼續做時, 同樣上面的步驟出現了狀況...

**我到步驟h.要設中斷開始Debug時, 發現有好幾行已經無法設了, 譬如我想設這一行, 結果中斷跳到下一行去, 該行硬是不給我設...

我後來查了很多資料, 有的說是.pdb檔在作怪, 有的說XP sp2可能會有問題(因為我曾經因為那個被插進來的工作而Upgrade到Sp2, 然後又移除掉), 甚至也Browse過大陸幾個知名網站

但總之, 我到現在還是不知道原因, 還是try不出來, 我想請一些經驗老到的給一點指教, 是否有什麼方向可以提供呢?

最近因為這問題搞了我浪費了約8小時人力, 而且也沒得到結果, PO上來不敢奢求會有正確解答, 實在是個人在下我已經窮途末路, 無所適從, 盼給個方向好讓我能繼續Try下去, 而不是傻傻的盯著電腦不知該怎辦

希望大家給意見吧(連結也可以喔~), 先謝了
作者 : bontaquila(燒酒仙) 貼文超過200則
[ 貼文 227 | 人氣 632 | 評價 580 | 評價/貼文 2.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人badidu註記此篇回應為很有道理 2004/10/16 下午 10:21:35
我沒試過你這種方法來debug driver耶,滿鮮的。
一般寫driver的,大概都是用kernel mode debugger來debug吧。在windows上不是用SoftIce就是用WinDbg吧。跟你現在用的方法沒什麼關係,但如果你真的搞不下去的話,弄台機器來玩一下別的debugger,就當打發時間吧。
作者 : eboytw2002(eBoy) 驅動程式優秀好手貼文超過200則人氣指數超過70000點
[ 貼文 338 | 人氣 70186 | 評價 2000 | 評價/貼文 5.92 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人badidu註記此篇回應為很有道理 2004/10/17 下午 08:07:08
BDD

你的信,我看了很久, 才感覺出你似乎要問什麼....

你似乎沒有改 code, 只是一昧的想進入 trace code,
但又不得其法,

你有幾個問題

1) Windows Kernel 可能完全不懂
2) Kernel Debugging 可能不懂
3) Printer driver 可能不懂

因為, 你把 Debug user mode program 的方式用在 kernel
, Kernel 的 code 當然不能 Tracing 的起來

[eBoy]
我想你要由 Kernel debuggi
作者 : badidu(BDD)
[ 貼文 135 | 人氣 9186 | 評價 290 | 評價/貼文 2.15 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/18 上午 11:11:27
Sorry 啦~給大家添麻煩了

其實我對 Driver這一塊的確了解得不多, 我的領域多是在應用程式的部分,

至於Driver會採用現在這樣的方式, 其實也是走的人交接下來的, 唉~接別人的屎缺也是沒辦法的事

但事實上, 我曾經用這個方法去增加Driver的功能, 而且也成功過了, 目前就是卡到為何他後來一直會無法Debug(沒有跑到我設的中斷點)

而說要更深入的了解Driver, 確實我現在是還不行啦, 很感激大家的建議, 有鑒於這個Case現在很趕, 我只好繼續找看看到底跟之前差在哪裡...

不過我想, 我大概真的要玩進Driver這塊領域了, 也好啦, 多學點東西吧~~
如果我知道原因之後, 我會Po上來請大家指教的
另:如果有其他人知道原因的話, 也要指導一下喔~先謝了
作者 : badidu(BDD)
[ 貼文 135 | 人氣 9186 | 評價 290 | 評價/貼文 2.15 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/19 上午 01:48:39
跟大家報告一下我研究的狀況...
我由DDK裡面的範例(printer裡面的MiniDriver)發現到一件事, 那就是, 寫一個Printer Driver事實上是不必使用到Kernel Mode的Debug就可以辦到, 所以看來我是一直在用VC在做User Mode 的 Debug, 我想原因應該是LPT Port已經是大家公認標準的關係吧(不知道是不是這樣)

另外, 我又發現到使用VC的 Debug 來 Attach process, 似乎原先就有一些小問題, 我上微軟網站查了一下, 發覺Service Pack的版本有很大的影響說

有任何進展我再上來PO...
作者 : badidu(BDD)
[ 貼文 135 | 人氣 9186 | 評價 290 | 評價/貼文 2.15 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/24 下午 04:05:28
已經找到問題
我發覺跟2000DDK的版本好像有些關係
我到網路上去Down的2000DDK看來是不太能Work
還得去找真正的2000DDK光碟片來裝才行

不知道有沒有人知道這裡面有什麼不同的
作者 : bontaquila(燒酒仙) 貼文超過200則
[ 貼文 227 | 人氣 632 | 評價 580 | 評價/貼文 2.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/26 上午 07:58:27
真的嗎?我之前從網路上,或是MSDN給的光碟裡裝,好像都一樣啊。
如果你試出來真的有不同的話,請一定要上來通知啊。
作者 : badidu(BDD)
[ 貼文 135 | 人氣 9186 | 評價 290 | 評價/貼文 2.15 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/10 下午 02:43:42
確實是有不同啦~
差別就在光碟片的DDK, 我可以設中斷點在所有地方
但是網路上Down的DDK, 就有可能不行了

而且兩個版本Build出來的Dll大小也不同
但真正原因我目前還不知道說@@

我現在都是用光碟片的版本來Build

不過你會不會有影響就很難說, 因為我是要用VC的Attach Process來Debug
搞不好只有用VC才會有問題也說不定

唉~看書學Driver真的有效嗎?
像這個問題, 我是try了老半天才知道原來DDK也有不同...
這種東西書本會寫嗎?
 板主 : 徵求中
 > 驅動程式 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 驅動程式 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
驅動程式
1 新兵衛 1240 
2 eBoy 980 
3 牧童哥 780 
4 北極熊 580 
5 天行者 580 
6 燒酒仙 440 
7 weber 380 
8 KEN 350 
9 jonay 180 
10 掌握文武半邊天 180 
驅動程式
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
6.201172E-02