= asynSetTracemask の指定について = PDF文書にも記載していますが、ioc shell 上でデバッグする際に どのようなメッセージが行き来しているかをみることは重要です。 正式なドキュメントは本家のサイト http://www.aps.anl.gov/epics/modules/soft/asyn/ からasynDriverへのリンクを参照してください。 == 書式 == {{{ asynSetTraceMask(portName,addr,mask) asynSetTraceIOMask(portName,addr,mask) }}} 定義は公式ドキュメントのTrace Interfaceの項か、ソース{{{ ${EPICS_BASE}/../modules/soft/asyn/[ver]/asyn/asynDriver/asynDriver.h }}} を参照。 (バージョンによって違いがあり、下の例はR4-31) {{{ Trace Interface /*asynTrace is implemented by asynManager*/ /*All asynTrace methods can be called from any thread*/ /* traceMask definitions*/ #define ASYN_TRACE_ERROR 0x0001 #define ASYN_TRACEIO_DEVICE 0x0002 #define ASYN_TRACEIO_FILTER 0x0004 #define ASYN_TRACEIO_DRIVER 0x0008 #define ASYN_TRACE_FLOW 0x0010 #define ASYN_TRACE_WARNING 0x0020 /* traceIO mask definitions*/ #define ASYN_TRACEIO_NODATA 0x0000 #define ASYN_TRACEIO_ASCII 0x0001 #define ASYN_TRACEIO_ESCAPE 0x0002 #define ASYN_TRACEIO_HEX 0x0004 }}} デフォルトでは !TraceMask が 0x1, TraceIOMask が 0x0 になっているので、 エラーが出たときのみログが表示されるようになっている。 == 使用例 == お勧めは * 通常時はデフォルトのまま {{{ asynSetTraceMask(PS1, 0, 0x1) asynSetTraceIOMask(PS1, 0, 0x0) }}} * デバッグ時には traceError と traceIODriver を有効にして {{{ asynSetTraceMask(PS1, 0, 0x9) asynSetTraceIOMask(PS1, 0, 0x4) }}} としておけば、バイナリ列がどのように行き来しているか分かる。(ASCIIで読みたいときにはIOMaskを0x1に) とにかく全部見たい場合、まずは {{{ asynSetTraceMask(PS1, 0, -1) asynSetTraceIOMask(PS1, 0, -1) }}} とかやっても良いです(後で適切なマスクにした方が幸せになれます)。