日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows服务程序的调试

發(fā)布時間:2024/4/17 windows 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows服务程序的调试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘自:MSDN

??? 1.由于服務(wù)必須從服務(wù)控制管理器的上下文中運行,而不是從 Visual Studio 中運行,因此調(diào)試服務(wù)不像調(diào)試其他 Visual Studio 應(yīng)用程序類型那樣簡單。若要調(diào)試服務(wù),必須首先啟動服務(wù),然后將一個調(diào)試器附加到正在運行服務(wù)的進程中(AttachToProcess)。

???? 附加到服務(wù)的進程使您能夠調(diào)試大多數(shù)服務(wù)代碼,但并非全部;例如,由于服務(wù)已經(jīng)啟動,因此不能用這種方法調(diào)試服務(wù)的 OnStart 方法中的代碼,或調(diào)試用于加載服務(wù)的 Main 方法中的代碼。(不斷循環(huán)的那塊代碼當然可以調(diào)試,只是不能調(diào)試初始化 服務(wù)運行環(huán)境的 線程的代碼,和服務(wù)線程中初始化部分代碼(初始化代碼往往比較短,當然這里可以設(shè)置sleep實現(xiàn)增加執(zhí)行時間的目的); )

?? 2.解決此問題的一個方法是:在唯一作用是幫助調(diào)試的服務(wù)應(yīng)用程序中創(chuàng)建一個臨時服務(wù)。可以將兩個服務(wù)都安裝上,然后啟動此“虛擬”服務(wù)加載服務(wù)進程。臨時服務(wù)啟動了進程后,就可以使用 Visual Studio 中的“調(diào)試”菜單來附加到服務(wù)進程。當附加該進程之后,可以設(shè)置斷點并使用這些斷點來調(diào)試代碼。當退出用于附加到該進程的對話框時,實際上已處于調(diào)試模式。您可以使用“服務(wù)控制管理器”開始、停止、暫停和繼續(xù)您的服務(wù),因此命中已設(shè)置的斷點。調(diào)試成功后,移除此“虛擬”服務(wù)。 (剛開始看的時間一直沒看明白,現(xiàn)在初步理解了,就是在一個Solution里面創(chuàng)建再創(chuàng)建一個臨時服務(wù)項目,將這個項目與要調(diào)試的項目一同編譯安裝到系統(tǒng)服務(wù)中(此時有了連個服務(wù)A和B),然后先啟動臨時服務(wù)A,并附加到該服務(wù)A的進程,此時VS整個Solution進入調(diào)試狀態(tài)了,這就是臨時服務(wù)的目的了.現(xiàn)在狀態(tài)下其實VS不僅在監(jiān)視著服務(wù)A進程,而且在此時啟動服務(wù)B的進程的話VS也會自動地附加上,因此我們可以自由地在任何地方設(shè)置斷點了,哈哈 ;其實并非一定要是個臨時服務(wù)項目,只要是個不停執(zhí)行不會自動結(jié)束的項目應(yīng)該都是可以的,目的就是讓VS進入Debug狀態(tài),能夠自動附加上進程B就可以了 )

??? 3.DbgBreakPoint 或者 DebugBreak(在x86機器上加入一條int 3匯編指令)(相當于在編譯后的程序中增加了調(diào)試異常,在程序到達斷點時會自動跳出即時調(diào)試窗口,和普通程序出錯時的窗口相似,只要選擇調(diào)試并選擇打開了源碼VS進行調(diào)試即可,有點像以前開發(fā)JS及動態(tài)網(wǎng)站用的調(diào)試方法,本人認為這種方法最簡單可行了,推薦一下 )

?? 注意了:調(diào)試 OnStart 方法可能比較困難,因為 Windows 服務(wù)管理器將所有嘗試啟動服務(wù)的時間限制在 30 秒內(nèi)。(這點是Windows固定的時間,估計應(yīng)該有地方能夠修改該限制,不過本人沒有找到,有同學找到了告訴俺哈,:-),現(xiàn)在我們做的最好是把初始化服務(wù)運行環(huán)境的代碼盡可能簡化,把與服務(wù)實際相關(guān)的信息初始化,放在服務(wù)主函數(shù)中執(zhí)行好了 .否則那你只會有30秒鐘時間看前面代碼的運行了,如果有自信那么快完成調(diào)試的話也可以寫前面了,本人能力是不是很足了,囧 )

轉(zhuǎn)載于:https://www.cnblogs.com/dongzhiquan/archive/2010/07/30/1994584.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Windows服务程序的调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。