工具 | Procexp工具使用及案例说明
文章最早發(fā)布在微信公眾號“燕幕自安”上,該博客和“燕幕自安”同作者。非經(jīng)過本人同意,嚴禁轉(zhuǎn)載。
PROCEXP
?
【工具概述】
????????Procexp,即process explorer,進程瀏覽器。用來查看計算機上運行的進程的狀態(tài)。(CPU、內(nèi)存、句柄、加載dll、線程及堆棧等)
【功能介紹】
1. 查看進程CPU、內(nèi)存
????????打開工具主界面就能看到PID、CPU、內(nèi)存使用等情況,和資源管理器類似。
2. 查看進程掛載的DLL文件、句柄
????????在上方菜單欄或者工具欄打開show lower pane。如下:
????????打開后選定某進程,可在下方界面看到指定的進程所加載的所有DLL,如下:
?????? 點擊View Handles,顯示該進程的句柄信息。
?
????????點擊右邊的望遠鏡查找所有進程、DLLs、Handle等信息,比如,我查找Cryptnetwork.dll。結(jié)果如下:
????????這里有所有加載了該庫文件的進程。點擊可跳轉(zhuǎn)到該進程的對應(yīng)信息。這個功能在查找自己的目標進程是否成功加載自己的dll時很好用。
3. 查看進程線程及堆棧
????????在主界面上,雙擊某進程,可打開該進程的屬性頁,如下:
????????這里可以看到,進程的模塊信息、資源占用、線程、網(wǎng)絡(luò)監(jiān)聽等。下面主要說線程及堆棧。
????????要看程序的線程及堆棧信息,需要有該進程及下屬DLL模塊的PDB符號文件。將對應(yīng)文件拷貝到文件夾如:C:\mysymbol 。然后打開option。如下:
????????將剛才的pdb文件目錄填在里面。其中前半段是微軟的庫文件的符號文件,他會在指定網(wǎng)站下載存在C:\symbols。后半段是我們配置的。
????????完成后打開進程查看,就能看到進程下的線程信息。(如果不配置也能看到,但對應(yīng)不到線程名等,下面有對比)
????????配置好了,會有如上顯示,正在加載符號文件。稍等后顯示出來了,如下:
????????如果不配置符號文件,只能看到對應(yīng)的模塊名和線程ID,如下:
????????然后,我們點擊某線程進去可以看到對應(yīng)的堆棧信息。如下:
????????棧信息從下向上看,看到該線程,調(diào)用了ws2_32的Accept,然后就是線程等待。這一定是監(jiān)聽了端口,在等待連接。
【注意事項】
??????? Procexp工具一定要以管理員權(quán)限運行,否則看不到部分SYSTEM進程信息,影響問題定位。
【案例一 ?查看堆棧信息定位進程崩潰】
????????之前用該工具定位了一個偶現(xiàn)的進程崩潰的問題,因為之前的截圖找不到了,我自己寫了幾句簡單的代碼,來復(fù)現(xiàn)這個崩潰。如下:
????????上面的fseek函數(shù)的第一個參數(shù)不能為空,之前我們的進程崩潰就是因為多個進程訪問文件時,打開文件失敗了,文件句柄為NULL,但是沒有判斷,直接送給fseek,導(dǎo)致了進程崩潰。這次我直接寫個錯誤的,讓他崩潰,然后我們來定位一下。
????????運行編譯出的工具,出現(xiàn)崩潰界面,如下:
????????這時不要關(guān)閉該窗口,因為關(guān)閉了之后,進程就會關(guān)閉,他的棧也會釋放掉,現(xiàn)在打開procexp,配置好symbols path(pdb文件在編譯的時候就一起生成了,拷貝到指定目錄即可),找到ffff.exe,然后雙擊打開屬性,查看線程信息,如下:
????????找到主線程,雙擊進入,查看堆棧信息。如下:
????????發(fā)現(xiàn),程序在執(zhí)行tmain進入后,執(zhí)行fseek,然后就開始報錯。所以直接懷疑此處代碼,先找到主線程,然后找到主線程下的所有fseek函數(shù),就能鎖定問題原因了。
【案例二 ?小工具鎖定廣告來源】
????????電腦右下角經(jīng)常會彈出很多小廣告,也不知道是哪些進程彈出來的,很是煩人,在procexp上,有個小工具,能鎖定該廣告所屬進程,這樣就能關(guān)閉刪除之。
????????操作如下:
????????點擊圖示按鈕,拖動到廣告頁面,放開鼠標,工具會自動定位到廣告的來源進程,找到后,刪除進程或刪除進程文件即可。
????????Procexp工具就介紹到這里,還有很多沒有說的功能大家去探索。好的工具能幫助我們很快分析定位問題。
????????君子善假于物也~
????????非經(jīng)過本人同意,嚴禁轉(zhuǎn)載。
????????如有問題,請關(guān)注公眾號留言,我看到會及時回復(fù)的。
?
總結(jié)
以上是生活随笔為你收集整理的工具 | Procexp工具使用及案例说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ref and Out
- 下一篇: ASP.NET MVC的路由