如何為執行在 IIS 下的 CGI 應用程式除錯(Debug)

文章翻譯 文章翻譯
文章編號: 238788 - 檢視此文章適用的產品。
本文曾發行於 CHT238788
全部展開 | 全部摺疊

結論

本文說明如何為執行在IIS下的CGI應用程式除錯。

其他相關資訊

若要為 VC CGI 應用程式除錯,請執行下列步驟:

  1. 請先包含windows.h並建立CGI除錯版本再加入下述程式碼::
    #define _WIN32_WINNT 0x0400


    在CGI的開始加入下述程式碼:
        #ifdef _DEBUG
        char szMessage [256];
        wsprintf (szMessage, "Please attach a debbuger to the process 0x%X (%s) and click OK",
                  GetCurrentProcessId(), argv[0]);
        MessageBox(NULL, szMessage, "CGI Debug Time!",
                   MB_OK|MB_SERVICE_NOTIFICATION);
        #endif


    啟動CGI應用程式

    當螢幕上出現訊息方塊,附加除錯工具在CGI處理程序(例如Visual C)。

    當除錯工具被附加,開啟來源檔案和設立中斷點。點選 "確認", 取消此訊息方塊。當此訊息方塊取消,CGI將繼續執行,在中斷點停止。
  2. 在CGI的開始加入下述程式碼:
        #ifdef _DEBUG
        char szMessage [256];
        wsprintf (szMessage, "Please attach a debbuger to the process 0x%X (%s) and click OK",
                  GetCurrentProcessId(), argv[0]);
        MessageBox(NULL, szMessage, "CGI Debug Time!",
                   MB_OK|MB_SERVICE_NOTIFICATION);
        #endif


    啟動CGI應用程式

    當螢幕上出現訊息方塊,附加除錯工具在CGI處理程序(例如Visual C)。

    當除錯工具被附加,開啟來源檔案和設立中斷點。點選 "確認", 取消此訊息方塊。當此訊息方塊取消,CGI將繼續執行,在中斷點停止。
  3. 啟動CGI應用程式

    當螢幕上出現訊息方塊,附加除錯工具在CGI處理程序(例如Visual C)。

    當除錯工具被附加,開啟來源檔案和設立中斷點。點選 "確認", 取消此訊息方塊。當此訊息方塊取消,CGI將繼續執行,在中斷點停止。
  4. 當螢幕上出現訊息方塊,附加除錯工具在CGI處理程序(例如Visual C)。

    當除錯工具被附加,開啟來源檔案和設立中斷點。點選 "確認", 取消此訊息方塊。當此訊息方塊取消,CGI將繼續執行,在中斷點停止。
  5. 當除錯工具被附加,開啟來源檔案和設立中斷點。點選 "確認", 取消此訊息方塊。當此訊息方塊取消,CGI將繼續執行,在中斷點停止。
若要為 VB CGI 應用程式除錯,請執行下列步驟:

  1. 編譯VB.EXE符號除錯資訊(Symbolic Debug Info.),關掉最佳化。

    在CGI的專案中加入以下的函式原型(Function prototype)
    Public Declare Function Sleep Lib "kernel32" _
    (ByVal dwMilliseconds As Long) As Long


    在CGI的Sub Main( )的開始增加以下的程式碼:
    Sleep 60000


    點擊(Hit) CGI應用程式的瀏覽器。

    當CGI處於Sleeping,啟動Microsoft Developer Studio。在 "建立" 的清單,點選 "開始除錯" , 點選 "附加程序"Attach Process ,選擇 "顯示系統程序" 選項和附加CGI程序在除錯工具。當附加程序,被載入VB來源檔,和建立中斷點在Sleep的程序句後。

    當Sleep程序句的應用程式控制被釋放,除錯工具將停頓在中斷點。 "Sleeping 60000"表示給你60秒完成以上的步驟。 假如您需要更多的時間,請增加Sleep需要的數目。

  2. 在CGI的專案中加入以下的函式原型(Function prototype)
    Public Declare Function Sleep Lib "kernel32" _
    (ByVal dwMilliseconds As Long) As Long


    在CGI的Sub Main( )的開始增加以下的程式碼:
    Sleep 60000


    點擊(Hit) CGI應用程式的瀏覽器。

    當CGI處於Sleeping,啟動Microsoft Developer Studio。在 "建立" 的清單,點選 "開始除錯" , 點選 "附加程序"Attach Process ,選擇 "顯示系統程序" 選項和附加CGI程序在除錯工具。當附加程序,被載入VB來源檔,和建立中斷點在Sleep的程序句後。

    當Sleep程序句的應用程式控制被釋放,除錯工具將停頓在中斷點。 "Sleeping 60000"表示給你60秒完成以上的步驟。 假如您需要更多的時間,請增加Sleep需要的數目。

  3. 在CGI的Sub Main( )的開始增加以下的程式碼:
    Sleep 60000


    點擊(Hit) CGI應用程式的瀏覽器。

    當CGI處於Sleeping,啟動Microsoft Developer Studio。在 "建立" 的清單,點選 "開始除錯" , 點選 "附加程序"Attach Process ,選擇 "顯示系統程序" 選項和附加CGI程序在除錯工具。當附加程序,被載入VB來源檔,和建立中斷點在Sleep的程序句後。

    當Sleep程序句的應用程式控制被釋放,除錯工具將停頓在中斷點。 "Sleeping 60000"表示給你60秒完成以上的步驟。 假如您需要更多的時間,請增加Sleep需要的數目。

  4. 點擊(Hit) CGI應用程式的瀏覽器。

    當CGI處於Sleeping,啟動Microsoft Developer Studio。在 "建立" 的清單,點選 "開始除錯" , 點選 "附加程序"Attach Process ,選擇 "顯示系統程序" 選項和附加CGI程序在除錯工具。當附加程序,被載入VB來源檔,和建立中斷點在Sleep的程序句後。

    當Sleep程序句的應用程式控制被釋放,除錯工具將停頓在中斷點。 "Sleeping 60000"表示給你60秒完成以上的步驟。 假如您需要更多的時間,請增加Sleep需要的數目。

  5. 當CGI處於Sleeping,啟動Microsoft Developer Studio。在 "建立" 的清單,點選 "開始除錯" , 點選 "附加程序"Attach Process ,選擇 "顯示系統程序" 選項和附加CGI程序在除錯工具。當附加程序,被載入VB來源檔,和建立中斷點在Sleep的程序句後。

    當Sleep程序句的應用程式控制被釋放,除錯工具將停頓在中斷點。 "Sleeping 60000"表示給你60秒完成以上的步驟。 假如您需要更多的時間,請增加Sleep需要的數目。

欲取得詳細資訊,請參閱下面的 Microsoft 知識庫文件:
183480 HOWTO: Debug ISAPI and Filter DLL Under IIS 4.0

?考


本文件是根據 Microsoft Knowledgebase 文件編號 Q238788 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

http://support.microsoft.com/support/kb/articles/Q238/7/88.asp

屬性

文章編號: 238788 - 上次校閱: 2003年10月15日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Internet Information Server 2.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
關鍵字:?
kbhowto kbgrpinetserver KB238788
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com