除錯器 - 版本注意事項

1.0 簡介
2.0 已知的問題
   2.1 Web 開發環境
   2.2 WebSphere Application Server 除錯
   2.3 JavaScript 除錯器
   2.4 SQL 儲存程序除錯器
   2.5 測試和部署工具(伺服器工具)
   2.6 Java 開發工具 (JDT) 除錯器
   2.7 國家語言限制
   2.8 SQL 儲存程序除錯器 (Linux)
   2.9 SQLJ 除錯器

1.0 簡介

WebSphere Studio 中的除錯器提供了 Web 應用程式、伺服器端 JavaScript、Java、SQL 儲存程序以及編譯的語言除錯所需的工具。 這個 Readme 檔會說明和 WebSphere Studio 除錯器相關聯的已知問題與限制。

2.0 已知的問題

2.1 Web 開發環境

JSP 除錯:

2.2 WebSphere Application Server 除錯

2.3 JavaScript 除錯器

2.4 SQL 儲存程序除錯器

2.5 測試和部署工具(伺服器工具)

當您決定以除錯模式執行伺服器時,請考量下列事項:

2.6 Java 開發工具 (JDT) 除錯器

請參閱 Java 開發工具 (JDT) 版本注意事項和工作台 (IDE) 版本注意事項,以取得 Java 開發工具已知的問題和限制的相關資訊。 本產品所安裝的主要產品 Readme 會鏈結這些版本注意事項。

2.7 國家語言限制

2.8 SQL 儲存程序除錯器 (Linux)

當您進行本端資料庫的 SQL 儲存程序除錯時,可能會出現錯誤碼 SQL1224N:

COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N 無法啟動資料庫代理程式來處理要求,或資料庫代理程式已因為資料庫系統關閉或強制指令而終止。SQLSTATE=55032

這是因為 Linux Kernel 的問題(Linux Kernel Bugzilla 錯誤 #351)所造成的。 下列指示是一個暫行解決方法,它利用 DB2 的 TCPIP 連線方法(作為迴路)來取代呼叫層次介面 (CLI)。 這個程序可讓除錯器使用與先前相同的資料庫別名:

  1. 如果沒有設定遠端 DB2 用戶端的埠,請在 /etc/services 中建立 TCP/IP 埠(如 db2cdb2inst1 50000/tcp # DB2 connection service port)。 可以使用遠端 DB2 用戶端現有的埠。

    您必須以 DB2 實例擁有者的身分登入,才能執行以下的第 2-7 步驟。

  2. 配置資料庫管理程式來啟動 TCP/IP 通訊協定的連線管理程式。 如果您不確定有沒有完成這個動作,請發出下列指令:
    db2set db2comm

    如果輸出沒有包含 tcpip 關鍵字,您必須輸入下列指令來更新 db2comm 登錄變數,使它包括 tcpip

    db2set db2comm=<existing protocol names>,tcpip

    db2comm 登錄變數決定在啟動資料庫管理程式時,要啟用哪個通訊協定的連線管理程式。 您可以將這個變數設給多個通訊協定,用逗點來分開各個關鍵字,比方說,db2set db2comm=tcpip,appc

    您必須重新發出 db2start 指令,才能啟動 db2comm 登錄參數指定的通訊協定的連線管理程式。 由於以下第 7 步驟會重新啟動 DB2,因此,這時不需執行這個動作。

    .
  3. 利用 /etc/services 中所定義的連線服務名稱(第 1 步驟)來更新 SVCENAME 資料庫管理程式配置參數。

    如果要檢查 SVCENAME 的現行設定,請輸入下列指令:

    db2 get dbm cfg | grep -i svcename

    如果您需要更新 SVCENAME 的設定,請輸入下列指令:

    db2 update dbm cfg using svcename <connection service name>

    其中 <connection service name> 會區分大小寫,必須符合 /etc/services 中的服務埠名稱(如 db2 update dbm cfg using svcename db2cdb2inst1)。

    資料庫管理程式配置的更新必須等到下次發出 db2start 指令時才會生效。 以下第 7 步驟會執行這個動作。

  4. 輸入下列指令來建立迴路節點的型錄:
    db2 catalog tcpip node <nodename> remote 127.0.0.1 server <connection service name>

    其中 <nodename> 是要建立型錄之節點的本端別名。 這是工作站中的任意名稱,用來識別節點(如 db2 catalog tcpip node mynode remote 127.0.0.1 server db2cdb2inst1)。

    如果要確認 catalog 指令能正常運作,請發出下列指令:

    db2 list node directory

    以下是這個指令的範例輸出(為方便閱讀,已移除空行):

    節點目錄
    目錄中的項目數 = 1
    節點 1 項目:
    節點名稱 = MYNODE
    備註 =
    通訊協定 = TCPIP
    主機名稱 = 127.0.0.1
    服務程式名稱 = db2cdb2inst1
  5. 依下列方式來建立資料庫型錄。 如果您要追蹤每個指令的效果,請參閱下面所提供的指令來產生範例輸出:
    1. db2 catalog db <database name> as <database alias>
    2. db2 uncatalog db <database name>
    3. db2 catalog db <database alias as <database name> at node <nodename>
    比方說,
    db2 catalog db WAS as WASLOOP
    db2 uncatalog db WAS
    db2 catalog db WASLOOP as WAS at node MYNODE

    附註:

    • 資料庫別名可以是您想要的任何名稱,但不能與資料庫同名。
    • 如果沒有正確建立資料庫型錄,會出現錯誤碼 SQL1334N。
    • 要進行儲存程序除錯的每個資料庫都必須重複第 5a-5c 步驟。

    第 5a-5c 步驟的範例輸出

    在第 5a 步驟之前,已建立了名稱為 WAS 的本端資料庫。 db2 list db directory 指令的輸出如下:

    系統資料庫目錄
    目錄中的項目數 = 1

    資料庫 1 項目:

    資料庫別名 = WAS
    資料庫名稱 = WAS
    本端資料庫目錄 = /home/ctsui
    資料庫版本層次 = 9.00
    備註 =
    目錄項目類型 = Indirect
    型錄節點號碼 = 0

    在第 5a 步驟之後,db2 list db directory 指令的輸出如下:

    系統資料庫目錄
    目錄中的項目數 = 2

    資料庫 1 項目:

    資料庫別名 = WAS
    資料庫名稱 = WAS
    本端資料庫目錄 = /home/ctsui
    資料庫版本層次 = 9.00
    備註 =
    目錄項目類型 = Indirect
    型錄節點號碼 = 0

    資料庫 2 項目:

    資料庫別名 = WASLOOP
    資料庫名稱 = WAS
    本端資料庫目錄 = /home/ctsui
    資料庫版本層次 = 9.00
    備註 =
    目錄項目類型 = Indirect
    型錄節點號碼 = 0

    在第 5b 步驟之後,db2 list db directory 指令的輸出如下:

    系統資料庫目錄
    目錄中的項目數 = 1

    資料庫 1 項目:

    資料庫別名 = WASLOOP
    資料庫名稱 = WAS
    本端資料庫目錄 = /home/ctsui
    資料庫版本層次 = 9.00
    備註 =
    目錄項目類型 = Indirect
    型錄節點號碼 = 0

    在第 5c 步驟之後,db2 list db directory 指令的輸出如下:

    系統資料庫目錄
    目錄中的項目數 = 2

    資料庫 1 項目:

    資料庫別名 = WAS
    資料庫名稱 = WASLOOP
    節點名稱 = MYNODE
    資料庫版本層次 = 9.00
    備註 =
    目錄項目類型 = Remote
    型錄節點號碼 = -1

    資料庫 2 項目:

    資料庫別名 = WASLOOP
    資料庫名稱 = WAS
    本端資料庫目錄 = /home/ctsui
    資料庫版本層次 = 9.00
    備註 =
    目錄項目類型 = Indirect
    型錄節點號碼 = 0

    如果要確認 catalog db 指令能正常運作,請發出下兩個指令(請參閱下面的範例輸出):

    db2 connect to wasloop
    db2 connect to was

    其中 db2 connect to wasloop 應該會印出連線資訊,db2 connect to was 應該會提供 SQL1403N。

    db2 connect to wasloop 的範例輸出如下:

    資料庫連線資訊
    系統資料庫目錄

    資料庫伺服器 = DB2/6000 6.1.0
    SQL 授權 ID = CTSUI
    本端資料庫別名 = WASLOOP

    db2 connect to was 的範例輸出如下:

    SQL1403N 提供的使用者名稱和/或密碼不正確。SQLSTATE=08004
  6. 將鑑別機制更新為用戶端鑑別。輸入下列指令:
    db2 update dbm cfg using authentication client

    如果要確認指令能正常運作,請利用下列指令來顯示新設定:

    db2 get dbm cfg

    範例輸出:

    ....
    資料庫管理程式鑑別         (AUTHENTICATION) = CLIENT
    ....
  7. 重新啟動 DB2 來重新整理目錄快取。比方說,
    db2stop
    db2start
  8. 不需要更新 WAS 的 admin.config 檔。 不需要變更 WebSphere 應用程式的現有資料來源配置。
  9. 如果您要除去資料庫,請執行下列動作:
    1. db2 attach to <nodename> user <userid> using <password>
    2. db2 drop db <database name>
      比方說,db2 attach to MYNODE user myid using mypasswd
      db2 drop db WAS

2.9 SQLJ 除錯器

當執行熱交換時,如果正在進行 J9 JVM 除錯,且呼叫堆疊中有任何 SQLJ 方法,會出現堆疊中已作廢的方法對話框。 如果是 SQLJ 類別在進行熱交換,類別會重新載入 JVM 中,但在下次呼叫類別中的方法之前,不會執行新程式碼。

如果您要交換 SQLJ 類別,在現行除錯階段作業期間,這個類別的 SQLJ 岔斷點可能無法運作。

返回主 Readme 檔