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

posts - 23,  comments - 20,  trackbacks - 0
服務器又出問題了   實在是沒辦法了  因為那得錯誤我這邊沒辦法重現  也不知道如何寫dump文件 而經理又不讓安裝VS  沒辦法  最后只能使用WinDbg 來調試了  網上找了相關資料
先Copy下來吧  以后還是會用的   還有  要買書了  在學校的時候看見了<軟件調試>  只是覺得厚   沒怎么看  現在后悔了...  要買了

先Copy資料吧


本篇文章得主要目的是介紹WINDBG的主要功能以及相關的命令。關于這些命令的詳細語法,請參閱幫助文件。對文章中提到的許多命令,WINDBG有相應的菜單選項。
1.如何得到幫助

 在命令(Command)窗口中輸入.hh 命會調出幫助文件令。

 .hh keyword

會顯示關于keyword的詳細命令。

2.啟動Debugger

 Windbg可以用于如下三種調試:

 a.遠程調試:你可以從機器A上調試在機器B上執行的程序。具體步驟如下:

? 在機器B上啟動一個調試窗口(Debug Session)。你可以直接在Windbg下運行一個程序或者將Windbg附加(Attach)到一個進程。

? 在機器B的Windbg命令窗口上啟動一個遠程調試接口(remote):

.server npipe:pipe=PIPE_NAME

PIPE_NAME是該接口的名字。

? 在機器A上運行:

windbg –remote npipe:server=SERVER_NAME,pipe=PIPE_NAME

SERVER_NAME是機器B的名字。

b.Dump文件調試:如果在你的客戶的機器上出現問題,你可能不能使用遠程調試來解決問題。你可以要求你的用戶將Windbg附加到出現問題的進程上,然后在命令窗口中輸入:

.dump /ma File Name

創建一個Dump文件。在得到Dump文件后,使用如下的命令來打開它:

windbg –z DUMP_FILE_NAME

c.本地進程調試:你可以在Windbg下直接運行一個程序:

Windbg “path to executable” arguments

也可以將Windbg附加到一個正在運行的程序:

Windbg –p “process id”

Windbg –pn “process name”

注意有一種非侵入(Noninvasive)模式可以用來檢查一個進程的狀態并不進程的執行。當然在這種模式下無法控制被調試程序的執行。這種模式也可以用于查看一個已經在Debugger控制下運行的進程。具體命令如下:

Windbg –pv –p “process id”

Windbg –pv –pn “process name”


------------------------------------------------------------

調試多個進程和線程

 如果你想控制一個進程以及它的子進程的執行,在Windbg的命令行上加上-o選項。Windbg中還有一個新的命令.childdbg 可以用來控制子進程的調試。如果你同時調試幾個進程,可以使用 | 命令來顯示并切換到不同的進程。

在同一個進程中可能有多個線程。~命令可以用來顯示和切換線程。

 ------------------------------------------------------------

調試前的必備工作

在開始調試前首先要做的工作是設置好符號(Symbols)路徑。沒有符號,你看到的調用堆棧基本上毫無意義。Microsoft的操作系統符號文 件(PDB)是對外公開的。另外請注意在編譯你自己的程序選擇生成PDB文件的選項。如果設置好符號路徑后,調用堆棧看起來還是不對。可以使用lm, !sym noisy, !reload 等命令來驗證符號路徑是否正確。

Windbg也支持源碼級的調試。在開始源碼調試前,你需要用.srcpath設置源代碼路徑。如果你是在生成所執行代碼的機器上進行調試,符號文 件中的源碼路徑會指向正確的位置,所以不需要設置源代碼路徑。如果所執行代碼是在另一臺機器上生成的,你可以將所用的源碼拷貝(保持原有的目錄結構)的一 個可以訪問的文件夾(可以是網絡路徑)并將源代碼路徑設為該文件夾的路徑。注意如果是遠程調試,你需要使用.lsrcpath來設置源碼路徑。

 ------------------------------------------------------------

靜態命令:

1.顯示調用堆棧:在連接到一個調試窗口后,首先要知道的就是程序當前的執行情況k* 命令顯示當前線程的堆棧。~*kb會顯示所有線程的調用堆棧。如果堆棧太長,Windbg只會顯示堆棧的一部分。.kframes可以用來設置缺省顯示框架數。

2.顯示局部變量:接下來要做通常是用dv顯示局部變量的信息。CTRL+ALT+V可以切換到更詳細的顯示模式。關于dv要注意的是在優化過的代 碼中dv的輸出極有可能是不準確的。這時后你能做的就是閱讀匯編代碼來發現你感興趣的值是否存儲在寄存器中或堆棧上。有時后當前的框架(Frame)上可 能找不到你想知道的數據。如果該數據是作為參數傳到當前的方法中的,可以讀一讀上一個或幾個框架的匯編代碼,有可能該數據還在堆棧的某個地址上。靜態變量 是儲存在固定地址中的,所以找出靜態變量的值較為容易。.Frame(或者在調用堆棧窗口中雙擊)可以用來切換當前的框架。注意dv命令顯示的是當前框架 的內容。你也可在watch窗口中觀察局部變量的值。

3.顯示類和鏈表: dt可以顯示數據結構。比如dt PEB 會顯示操作系統進程結構。在后面跟上一個進程結構的地址會顯示該結構的詳細信息:dt PEB 7ffdf000。

Dl命令可以顯示一些特定的鏈表結構。

4.顯示當前線程的錯誤值:!gle會顯示當前線程的上一個錯誤值和狀態值。!error命令可以解碼HRESULT。

5.搜索或修改內存:使用s 命令來搜索字節,字或雙字,QWORD或字符串。使用e命令來修改內存。

6.計算表達式:?命令可以用來進行計算。關于表達式的格式請參照幫助文檔。使用n命令來切換輸入數字的進制。

7.顯示當前線程,進程和模塊信息:!teb顯示當前線程的環境信息。最常見的用途是查看當前線程堆棧的起始地址,然后在堆棧中搜索值。!peb顯示當前進程的環境信息,比如執行文件的路徑等等。lm顯示進程中加載的模塊信息。

8.顯示寄存器的值:r命令可以顯示和修改寄存器的值。如果要在表達式中使用寄存器的值,在寄存器名前加@符號(比如@eax)。

9.顯示最相近的符號:ln Address。如果你有一個C++對象的指針,可以用來ln來查看該對象類型。

10.查找符號:x命令可以用來查找全局變量的地址或過程的地址。x命令支持匹配符號。x kernel32!*顯示Kernel32.dll中的所有可見變量,數據結構和過程。

 

11.查看lock:!locks顯示各線程的鎖資源使用情況。對調試死鎖很有用。

12.查看handle:!handle顯示句柄信息。如果一段代碼導致句柄泄漏,你只需要在代碼執行前后使用!handle命令并比較兩次輸出的區別。有一個命令!htrace對調試與句柄有關的Bug非常有用。在開始調試前輸入:

!htrace –enable

然后在調試過程中使用!htrace handle_value 來顯示所有與該句柄有關的調用堆棧。

13.顯示匯編代碼:u。

------------------------------------------------------------

程序執行控制命令:

1.設置代碼斷點:bp/bu/bm 可以用來設置代碼斷點。你可以指定斷點被跳過的次數。假設一段代碼KERNEL32!SetLastError在運行很多次后會出錯,你可以設置如下斷點:

bp KERNEL32!SetLastError 0x100.

在出錯后使用bl 來顯示斷點信息(注意粗體顯示的值):

0 e 77e7a3b0 004f (0100) 0:*** KERNEL32!SetLastError

重新啟動調試(.restart命令)并設置如下的斷點:

bp Kernel32!SetLastError 0x100-0x4f

Debugger會停在出錯前最后一次調用該過程的地方。

你可以指定斷點被激活時Debugger應當執行的命令串。在該命令串中使用J命令可以用來設置條件斷點:

bp `mysource.cpp:143` "j (poi(MyVar)”0n20) ''; 'g' "

上面的斷點只在MyVar的值大于32時被激活(g命令

條件斷點的用途極為廣泛。你可以指定一個斷點只在特殊的情況下被激活,比如傳入的參數滿足一定的條件,調用者是某個特殊的過程,某個全局變量被設為特殊的值等等。

2.設置內存斷點:ba可以用來設置內存斷點。調試過程中一個常見的問題是跟蹤某些數據的變化。如下的斷點:

ba w4 0x40000000 "kb; g"

可以打印出所有修改0x40000000的調用堆棧。

3.控制程序執行:p, pa,t, ta等命令可以用來控制程序的執行。

4.控制異常和事件處理:Debugger的缺省設置是跳過首次異常(first chance expcetion),在二次異常(second chance exception)時中斷程序的執行。sx命令顯示Debugger的設置。sxe和sxd可以改變Debugger的設置。

sxe clr

可以控制Debugger在托管異常發生時中斷程序的執行。常用的Debugger事件有:

av 訪問異常

eh C++異常

clr 托管異常

ld 模塊加載

-c 選項可以用來指定在事件發生時執行的調試命令。

powerwolf 發表于:2006.07.03 15:02
reference url:  http://powerwolf.itpub.net/post/20237/130218


特別要注意的就是!gle   這個命令相當于執行GetLastError()  而且還能查看內核的NTSTATUS

問題剛剛解決了    最后出現的問題也找到了   但是錯誤原因大跌眼鏡   ------殺毒軟件...

結論:
雖然我們需要豐富的調試技巧  但是  經驗仍然是最重要的
就像找工作一樣  學校里面你再牛   沒有經驗  你都比不過工作兩年的高中生

posted on 2009-08-20 11:51 李佳 閱讀(508) 評論(0)  編輯 收藏 引用 所屬分類: 調試技巧
<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            米奇777超碰欧美日韩亚洲| 亚洲欧美怡红院| 亚洲最新色图| 亚洲精品久久久久中文字幕欢迎你| 欧美日韩日日骚| 欧美好吊妞视频| 欧美日韩伦理在线免费| 欧美日韩国产综合视频在线观看| 久久久久久九九九九| 欧美一级日韩一级| 欧美在线视频全部完| 久久久亚洲午夜电影| 蜜桃av一区二区三区| 欧美精品麻豆| 国产亚洲亚洲| 亚洲制服欧美中文字幕中文字幕| 久久久噜噜噜久噜久久 | 久久成人精品电影| 久久久99精品免费观看不卡| 欧美国产综合| 久久亚洲一区| 国产欧美日韩视频| 一区二区三区精品视频在线观看| 久久狠狠一本精品综合网| 最新日韩av| 亚洲男人第一网站| 欧美视频免费看| 亚洲激情av| 亚洲国产精品激情在线观看| 欧美一级视频| 亚洲国产日韩欧美在线动漫| 美女精品国产| 欧美a级一区| 亚洲日本中文| 欧美激情视频一区二区三区在线播放| 欧美一区二区免费| 国产区精品在线观看| 欧美亚洲自偷自偷| 欧美影院精品一区| 亚洲国产日韩在线一区模特| 麻豆成人在线| 欧美人与性动交cc0o| 亚洲自拍偷拍色片视频| 性久久久久久| 亚洲第一黄网| 夜夜嗨一区二区| 国产精品一区二区欧美| 蜜桃久久av| 亚洲欧美精品suv| 久久久五月婷婷| 亚洲欧美日韩精品久久久久| 香蕉尹人综合在线观看| 亚洲欧美不卡| 亚洲国产成人久久综合一区| 日韩一区二区精品视频| 国产毛片精品国产一区二区三区| 欧美成人在线免费视频| 欧美激情亚洲综合一区| 久久国产精品久久久久久久久久| 久久精品国产91精品亚洲| 亚洲一区在线播放| 久久综合国产精品| 久久久噜噜噜久噜久久| 国产精品国产一区二区| 亚洲国产精品va在看黑人| 国内精品99| 午夜精品久久久久久99热| 亚洲一区综合| 欧美日韩精品免费观看视频| 欧美大胆成人| 亚洲国产乱码最新视频| 久久se精品一区精品二区| 欧美一级免费视频| 国产精品女人网站| 午夜一区二区三区在线观看| 欧美亚洲一区在线| 国产一区二区中文| 久久精品国产一区二区三区免费看| 欧美在线一级va免费观看| 国产精品五区| 久久久最新网址| 91久久精品www人人做人人爽| 亚洲国产成人不卡| 欧美刺激性大交免费视频| 欧美高清视频一区二区| 亚洲精品在线视频| 国产精品视频免费在线观看| 欧美在线播放一区| 欧美va亚洲va日韩∨a综合色| 久久免费午夜影院| 欧美激情中文字幕在线| 亚洲欧美在线一区| 国内精品久久久久久| 欧美精品 国产精品| 亚洲一区在线播放| 欧美韩日视频| 久久激情久久| 亚洲一区日韩| 9l国产精品久久久久麻豆| 韩国免费一区| 国产日本欧美一区二区三区| 欧美精品一区二区三| 久久精品二区亚洲w码| 亚洲伊人第一页| 日韩亚洲在线观看| 亚洲免费观看高清完整版在线观看| 欧美在线亚洲一区| 久久9热精品视频| 欧美永久精品| 久久午夜羞羞影院免费观看| 久久国产精品一区二区三区| 翔田千里一区二区| 亚洲午夜av电影| 先锋影音久久| 久久久不卡网国产精品一区| 久久九九国产精品| 久久综合国产精品台湾中文娱乐网| 亚洲香蕉在线观看| 久久精品国产精品亚洲精品| 欧美亚洲网站| 亚洲高清在线观看一区| 亚洲精品在线观| 午夜视频在线观看一区| 老司机午夜免费精品视频| 欧美日韩国产区| 国产在线播精品第三| 亚洲精品在线三区| 久久久久国产精品一区三寸| 亚洲第一页在线| 亚洲欧美清纯在线制服| 麻豆91精品91久久久的内涵| 久久伊人精品天天| 欧美sm视频| 亚洲一区在线视频| 欧美精品偷拍| 狠狠久久婷婷| 欧美亚洲视频| 亚洲性感美女99在线| 欧美另类69精品久久久久9999| 国产精品三级视频| 亚洲一区在线观看视频| 亚洲美女毛片| 亚洲一区二区三区高清 | 欧美专区18| 一区二区国产日产| 欧美日韩视频免费播放| 亚洲国产高清在线| 久久嫩草精品久久久久| 亚洲欧美日韩国产综合| 国产精品欧美日韩一区| 午夜精品www| 亚洲一区二区综合| 国产精品伦一区| 亚洲女性裸体视频| 亚洲欧美日韩中文视频| 在线播放日韩| 亚洲福利视频在线| 欧美高清视频一区二区| 亚洲视频导航| 亚洲欧美激情视频| 狠狠色2019综合网| 亚洲激情啪啪| 国产一区二区三区在线播放免费观看 | 美乳少妇欧美精品| 欧美日韩国产综合新一区| 一区二区福利| 久久国产精品久久久| 99爱精品视频| 久久精品男女| 欧美在线免费观看视频| 一色屋精品亚洲香蕉网站| 欧美成人午夜激情视频| 欧美一区二区三区四区在线观看| 亚洲欧美国产三级| 99精品国产福利在线观看免费| 亚洲男人的天堂在线aⅴ视频| 在线看国产一区| 亚洲自拍偷拍福利| 亚洲无玛一区| 欧美精品久久久久久| 免费永久网站黄欧美| 国产美女精品| 夜夜嗨一区二区| 亚洲私人影吧| 欧美日本中文字幕| 亚洲国产精品激情在线观看| 激情久久五月| 久久久久国产精品一区三寸| 欧美一区二区三区免费视| 欧美午夜美女看片| 亚洲一区二区三区中文字幕| 亚洲欧美制服另类日韩| 国产精品综合不卡av| 先锋影音国产一区| 久久久久在线| 亚洲免费观看高清完整版在线观看熊| 久久综合久色欧美综合狠狠 | 国产精品亚洲精品| 欧美在线视频a| 亚洲高清色综合|