• <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>
            posts - 297,  comments - 15,  trackbacks - 0
            關于ISAPI調試的文章,網上已經有很多。今天之所以還要寫這篇文章,原因有三:一是網上關于調試 ISAPI的方法大多數都是在Win2K;二是網上的例子雖然多,大部分都是轉載,大部分作者自己從未親自試過,就直接把別人的東西粘貼過來,往往影響了 網上搜索又誤導了其他尋找答案的人;三是網上的例子有些并不詳細,有些也不正確,這樣不但不能幫助解決問題,還容易把人帶入歧途。
             
              
             
                今天得了一點空閑,在這里詳細寫下ISAPI在Xp環境下的調試方法,希望初次接觸到ISAPI的程序員們少一些郁悶。
             
                首先我的操作系統環境是Microsoft Windows Xp Professional。我的編譯環境是Virsual C++6.0。VC的補丁主要有SP6。
             
            接下來按照下面的步驟:
            1、IIS的目錄(根目錄、虛擬目錄)運行級別改為低(默認為中)
            控制面板->管理工具->Internet信息服務。在默認站點上單擊右鍵->屬性->主目錄(標簽)->應用程序保護(N),將中(共用)改為低(IIS進程)。執行權限改為“教本和可執行文件”。
            用同樣的方法修改你新建的虛擬目錄的運行級別。
             
            2、修改本地安全策略屬性
            控制面板->管理工具->本地安全策略->本地策略->用戶權利指派。
            a、 找到“以操作系統方式操作”,雙擊或者右鍵選屬性,彈出對話框后,點“添加用戶或組”按鈕,在輸入文字區域中輸入管理員帳戶(又稱中超級用戶),“檢查名 稱”,“確定”添加。比如我現在登陸的帳號是Guyue,“檢查帳號”之后就出現A7B4931A85554A0\Guyue, A7B4931A85554A0是我的計算機名稱,Guyue是當前登陸帳戶,是除Administrator之外的我的管理員帳戶。“確定”添加。
            b、找到“允許計算機和用戶帳戶被信任以便于委托”,照a的方法添加管理員帳戶。
            注:這里我沒有加用戶,直接用的管理員用戶。
             
            3、打開VC6.0,不需要打開任何工程。
            菜單欄[Build]->[Start Debug]->Attach To Process
            勾選“Show System Process”,找到inetinfo,按OK鍵添加到該進程。
            在菜單欄[Project]->[Settings]或者直接按快捷鍵Alt+F7。
            會 看到一個General和一個Debug標簽,選擇Debug標簽。Category下拉列中有兩個選項,General和Additional DLLs,選擇Additional DLLs。在Modules中加入你要調試的DLL,勾選Try to locate others DLLs,按OK確定保存。

            4、打開你的ISAPI工程中的一個CPP文件,看能不能設置斷點,如果不能,按shift+F5鍵退出調試狀態。進 入下一步。如果退出之后繼續[Build]->[Start Debug]->Attach To Process,這個時候會提示,該工程不包含任何調試信息。如果能設置斷點,則直接進入第六步。
            注:這一步沒有成功,無法attach to process,點了按鈕以后process list還是空的。我是用
            msdev -p <process ID>生成的一個VC6環境,在運行IE后會在異常拋出位置停止。
             
            5、打開你的ISAPI工程中,確定你的編譯狀態為Debug狀態,確定你Link(輸出)的DLL和你在第三步Modules中保存的DLL為同一個文件。Rebuild一下。
             
            6、菜單欄[Build]->[Start Debug]->Attach To Process
            勾 選“Show System Process”,找到inetinfo,按OK鍵附加到inetinfo進程。打開ISAPI工程中的一個CPP文件,最好是程序的入口文件,在程序的 入口處設置斷點,比如我設置的就是CIsapiWtExtension::InitInstance(...)和DWORD CIsapiWtExtension::HttpExtensionProc(...)程序一旦開始運行,馬上就可以在這里截獲。
            注:既然步驟4里看不到process list,斷點設置自然也就不管用了。
             
            7、打開IE,打開你調用該DLL的站點,發出IE請求,VC應該就會在你設置斷點的地方攔截到這個請求對當前DLL的操作了。

            注:正如我在步驟4中講到的那樣,程序在異常位置會停住,可以看到函數的調用順序;再就是有個小trick,可以加個ASSERT在異常附近位置,這樣程序就可以停止在那兒,這樣也就可以使用斷點了。

            posted on 2008-07-19 18:24 chatler 閱讀(814) 評論(0)  編輯 收藏 引用 所屬分類: VC_MFC
            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产亚洲av麻豆色欲 | 久久夜色精品国产www| 久久狠狠一本精品综合网| 色综合久久88色综合天天| 久久99精品国产麻豆婷婷| 国产精品久久久香蕉| 无码专区久久综合久中文字幕| 久久久久久人妻无码| 久久久久亚洲爆乳少妇无| 亚洲欧美日韩久久精品第一区| 91精品国产色综合久久| 精品欧美一区二区三区久久久| 精品国产乱码久久久久软件| 久久91精品国产91久久户| 久久午夜无码鲁丝片秋霞| 91秦先生久久久久久久| 亚洲国产精品无码久久久秋霞2 | 久久久久亚洲精品中文字幕| 久久久久人妻一区二区三区| 国产成人综合久久久久久| 人妻无码αv中文字幕久久琪琪布| 久久久无码一区二区三区| 久久久久亚洲AV综合波多野结衣 | 亚洲一区中文字幕久久| 77777亚洲午夜久久多喷| 久久久久国产一区二区| 嫩草影院久久国产精品| 久久人人爽人人爽人人AV东京热| 人妻少妇精品久久| 久久久久久一区国产精品| 国产精品久久久久久久| 久久综合给合久久国产免费| 久久综合精品国产一区二区三区| 久久99国产精品二区不卡| 久久婷婷五月综合97色| 日韩欧美亚洲综合久久| 一本色道久久88综合日韩精品 | 久久久久人妻精品一区三寸蜜桃| 99热都是精品久久久久久| 99久久精品国产麻豆| 青青青青久久精品国产h|