Tips

デバッグ支援ツールとしてペーストボードを活用する

日付2009/08/10
ID75861 (英語原文参照)
バージョン11.4
プラットフォームMac & Win

ペーストボードを活用すれば、デバッガを介せずに受け渡しされている値を知ることができるので、とても便利です。特にコンパイルされたコードの場合、デバッガを表示することができないので、この方法は重宝します

たとえば次のようなコードをデータベースに用意し、SET TEXT TO PASTEBOARDコマンドをデバッグ目的で使用することができます。コード中、重要な箇所にこのメソッドへのコールをちりばめておくのです。メソッドの実行は、<>Debugging_Bのようなブールタイプのインタープロセス変数で制御すると良いでしょう。データベースを実行し、適当なテキストエディタに対して「ペースト」を実行すれば、簡単なデバッグログを作成することができます。

`UTIL_PasteboardDebugLogger ($Caller_T;$Action_T;$TextToPaste_T)

C_TEXT($Caller_T;$1)
C_TEXT($Action_T;$2)
C_TEXT($TextToPaste_T;$3)
C_TEXT($Buf_T)

If (<>Debugging_B) `// Make sure this boolean is defined early in the application
    
    $Caller_T:=$1
    $Action_T:=$2
    $TextToPaste_T:=$3
    
    `======================== Method Actions ==================================
    
    If ($Action_T="Append")
        $Buf_T:=Get text from pasteboard+"\r\r"
        $Buf_T:=$Buf_T+$Caller_T+": "+$TextToPaste_T
        SET TEXT TO PASTEBOARD($Buf_T)
        
    Else 
        CLEAR PASTEBOARD
        SET TEXT TO PASTEBOARD($Caller_T+": "+$TextToPaste_T)
        
    End if 
    
    `======================== Clean up and Exit =================================
    
End if

メソッドの動作を確認するには、次のようなメソッドを実行します。

C_TEXT($MethodName_T)
$MethodName_T:=Current method name
C_BOOLEAN(×Debugging_B)
×Debugging_B:=True

UTIL_PasteboardDebugLogger ($MethodName_T;"Paste";"This is paste #1")
UTIL_PasteboardDebugLogger ($MethodName_T;"Append";"This is paste #2")
UTIL_PasteboardDebugLogger ($MethodName_T;"Append";"This is paste #3")