程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-各位大蝦, 我想在程序裡監視系統上運行的某些程序運行過程中是否報錯異常,能實現嗎? 怎麼實現?

c++-各位大蝦, 我想在程序裡監視系統上運行的某些程序運行過程中是否報錯異常,能實現嗎? 怎麼實現?

編輯:編程綜合問答
各位大蝦, 我想在程序裡監視系統上運行的某些程序運行過程中是否報錯異常,能實現嗎? 怎麼實現?

對於程序運行過程中卡死已經能檢測,但是對於一些彈框類的運行出錯卻不知道怎麼檢測,請各位大蝦指點迷津; 現在沒有C幣,如果回答是我想要的,我花錢補上

最佳回答:


這不就是編寫一個華醫生麼(注:華醫生是微軟系統上負責處理應用程序崩潰的程序,就是你圖上的“xxx已停止工作,Windows正在聯機查找解決方案”),這是一個應用程序,是在用戶模式下實現的,而並非在內核中實現,其實華醫生也可以卸載掉,卸載之後程序崩潰就變成了“xxx進程試圖訪問的xxx內存,其內存不能為read/write/execute”(或者是壓根沒提示了)。但遺憾的是,微軟並沒有公開華醫生的實現原理,而事實上華醫生也不是微軟本來打算做的,而是微軟公司中一個技術大牛編寫後植入Windows的。當一個應用程序出現異常時,異常會按照這種方法傳遞:調試出錯進程的調試器進程->進程設置的自己的異常處理函數->華醫生。所以華醫生也有其缺陷,因為對於自己設置了異常處理的程序,他捕獲不到異常,比如QQ崩潰,打開的是QQ自己設置的出錯提示窗口,但是我們可以發現,調試器的優先級最高,也就是說,我們可以調試目標進程,在進程崩潰的時候就能最先拿到異常數據了,調試一個進程的方法有兩種,第一種是createprocess時添加一個調試進程的flag,第二種是動態設置調試,是有一個API的,有關調試進程如何獲取異常信息的,網上有很多資料,搜索Windows調試API

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved